Мне нравится, что в Dart можно писать чистый и лаконичный код, но, похоже, Dart — один из тех языков, которые легко написать, но трудно протестировать!
Например, учитывая следующий довольно простой метод, как его провести модульное тестирование?
typedef void HandleWebSocket(WebSocket webSocket);
Router createWebSocketRouter(HttpServer server, String context, HandleWebSocket handler) {
var router = new Router(server);
router.serve(context).transform(new WebSocketTransformer()).listen(handler);
return router;
}
Вам нужно каким-то образом заменить new Router() каким-то фабричным методом, который возвращает макет. Затем макет должен вернуть макет при вызове serve. Затем для этого должен быть метод фиктивного преобразования *, который возвращает фиктивный поток ... и в этот момент большинство людей сдадутся!
Мне удалось написать модульный тест, используя описанный выше подход, но, поскольку он потребовал 80 нечетных строк и загрязнил фактический класс фабричным методом, я вряд ли могу сказать, что доволен этим!
Есть ли лучший способ сделать это?