UnitTesting веб-клиент в Windows Phone 7 - PullRequest
1 голос
/ 27 октября 2011

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

Ответы [ 3 ]

4 голосов
/ 27 октября 2011

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

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

3 голосов
/ 27 октября 2011

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

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

interface IWebParser { MyResult Parse(string input); }

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

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

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

1 голос
/ 27 октября 2011

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

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

...