Юнит-тестирование сетевого приложения
От: g-host  
Дата: 30.05.11 08:03
Оценка:
Доброго времени суток.
Решил тут опробовать TDD, и сразу наткнулся на проблему.
По работе(я фрилансер) мне часто приходится писать раличные клиенты для веб-сайтов, парсеры, качалки и т.п.
Еще более усложняет задачу необходимость иногда выносить работу с сетью в отдельные потоки, или соединяться с сервером через прокси.
Вот допустим есть в проекте "низкоуровневый" класс SomeSiteClient, у него метод LogIn(), возвращающий перечисление LoginResult.
Результаты могут быть такими: успех, неверный логин/пароль, нет ответа от сервера/прокси и т.п.
Как тестировать такой метод?
Писать несколько тестов для каждого случая, передавая заведомо валидные и невалидные пароли?
Тогда результат теста будет зависеть от сети, что насколько я понимаю плохая практика в TDD.
Часто советуют внедрять заглушки для IO, но тогда и смысл тестирования пропадает. Ведь мне нужно быстро идентифицировать место "поломки",
а в таких рода приложениях это часто происходит из-за изменений на сайте. Да и что возвращать клиенту из этих заглушек? Фейковые "правильные" и "неправильные" респонзы?
Надеюсь ясно расписал суть проблемы.
Заранее спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.