Как юнит-тестировать презентер
От: Аноним  
Дата: 05.12.12 02:49
Оценка: -1
Есть 3-х звенная MVP архитектура, где для каждой вьюшки использется презентер, который ей управляет. Выглядит упрощенно так:


class MyPresenter
{
public MyPresenter(MyView view)
{
_view = view;
_view.AddCustomer += AddCustomer_Handler;
_view.DeleteCustomer += DeleteCustomer_Handler;

CallResult result = MyWebService.GetMyViewData();
_view.Initiate(result.Data)
}

private void AddCustomer_Handler(MyView view)
{
CallResult result = MyWebService.MyView_AddCustomer(view.GetCustomerID());

if !(result.NoErrors())
view.ShowErrorMessage();
else
view.ShowCustomerAddedConfirmationMessage()
}

private void DeleteCustomer_Handler(MyView view)...
}


как его теперь правильно юнит-тестировать? У него нет никаких паблик методов за исключением конструктора, который занимается только инициализацией, которую тоже непонятно можно и надо-ли вообще тестировать
Re: Как юнит-тестировать презентер
От: rdasomind  
Дата: 05.12.12 05:52
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть 3-х звенная MVP архитектура, где для каждой вьюшки использется презентер, который ей управляет.


А>как его теперь правильно юнит-тестировать? У него нет никаких паблик методов за исключением конструктора, который занимается только инициализацией, которую тоже непонятно можно и надо-ли вообще тестировать


При создании ему дается имитатор View у которого дергаются события для проверки презентера. Для создания имитатора можно использовать Microsoft Fakes
Re: Как юнит-тестировать презентер
От: Shopen Россия  
Дата: 05.12.12 06:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть 3-х звенная MVP архитектура, где для каждой вьюшки использется презентер, который ей управляет. Выглядит упрощенно так:



А>как его теперь правильно юнит-тестировать? У него нет никаких паблик методов за исключением конструктора, который занимается только инициализацией, которую тоже непонятно можно и надо-ли вообще тестировать


Понимаю, что мой ответ не совсем по существу, но все же выскажусь.

Допущение: у вас бизнес приложение (т.е. не сайтик) с явно выраженной бизнес логикой, вынесенной в отдельные сборки или вообще отдельный app server. Приложение большое и активно дорабатывается. Иначе не ясен смысл юнит тестов вообще.

В таком случае логичнее тестировать именно код, реализующий бизнес логику, т.к.:
1. он наиболее критичен для бизнеса
2. он чаще меняется
3. он сложнее с точки зрения выполняемых бизнес-действий
4. его можно спроектировать архи удобно для последующей разработки и сопровождения тестов

Какой смысл тратить время разработчиков на разработку, а главное сопровождение юнит-тестов "тонкого" UI? Дешевле и проще нанять человека, который руками протыкает все кнопки...заодно продублировав за вашими юнит тестами проверку бизнес функционала, который вызывается при нажатии на эти кнопки. Ну или если уж очень хочется автоматизировать процесс, то давайте будем последовательными: почему мы тестируем серверный код UI проекта, но не тестируем жабаскрипт и хтмл? Может тогда логичнее взять нечто вроде Селениума?
Re: Как юнит-тестировать презентер
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 05.12.12 06:56
Оценка:
How to: Implement the Model-View-Presenter Pattern
How to: Unit Test a Presenter
Ce n'est que pour vous dire ce que je vous dis.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.