Модульное тестирование веб-клиента в Windows Phone 7

#unit-testing #windows-phone-7 #event-handling #webclient

#модульное тестирование #windows-phone-7 #обработка событий #веб-клиент

Вопрос:

У меня есть некоторые запросы WebClient в моем приложении, и я хочу проверить синтаксический анализ полученных данных в модульном тестировании. Как мне дождаться в WP7 Silverlight UnitTestFramework события client_DownloadStringCompleted?

Ответ №1:

Мой подход к этому заключался в том, чтобы ввести класс-оболочку вокруг WebClient (ну, я на самом деле использовал HttpWebRequest в конце, как WebClient и слишком много в потоке пользовательского интерфейса …) реализации интерфейса. Затем я мог бы создать FakeWebClient реализацию IWebClient , позволяющую мне проверять выбранные URL-адреса и отвечать на ошибки, случаи успеха и т.д. по желанию.

К сожалению, довольно много API-интерфейсов в .NET нелегко тестировать / подделывать: (

Ответ №2:

Здесь совершенно неправильный подход. Вы неправильно тестируете модуль.

То, что вы хотите сделать, это перенести ваш синтаксический анализ данных в другой класс и определить интерфейс, скажем:

 interface IWebParser { MyResult Parse(string input); }
 

а затем внедрите это в свой класс и в своем DownloadStringCompleted событии вызовите iWebParser.Parse(e.Result) .

Теперь вы можете протестировать свои реализации IWebParser. И замените его.

Модульное тестирование не предназначено для тестирования кода, специфичного для конкретной реализации. С таким же успехом вы могли бы просто использовать средство доступа и протестировать частный метод!

Ответ №3:

Обычно вы не должны тестировать с помощью HTTP-запросов. Но для написания таких тестов в любом случае в конечном итоге вам поможет эта ссылка (асинхронное тестирование):

http://www.jeff.wilcox.name/2009/03/asynchronous-testing/