Я вхожу в TDD;используя nUnit и RhinoMocks 3.5.
Я пытаюсь выяснить, как AssertWasCalled для метода в SystemUnderTest (SUT).Насколько я понимаю, вы не можете издеваться над тестируемой системой.Фактически, мой текущий тест приводит к исключению, потому что я использую AssertWasCalled на SUT.
OrdersPresenter:
public void OnViewLoad_GetOrders()
{
var orders = GetOrders();
View.Model.Orders = orders;
}
public List<Orders> GetOrders()
{
return _ordersRepository.GetAll();
}
OrdersPresenterTest:
_ordersPresenter = new OrdersPresenter(_view, _ordersRepository);
[Test]
public void OnViewLoad_GetOrders_Should_Call_GetOrders()
{
_view.Raise(v => v.LoadOrders += _ordersPresenter.OnViewLoad_GetOrders, view, new EventArgs);
_ordersPresenter.AssertWasCalled(d => d.GetOrders); // Getting non-mock exception here
}
Как я могу утверждать, что GetOrders был вызван в SUT?Я не смог выяснить это в документах.
Любая помощь очень ценится.
Редактировать:
Я понимаю, что метод GetOrders в SUT должен быть закрытым.Я вернулся к «Искусству модульного тестирования» Роя Ошерова, чтобы узнать, как тестировать частные методы.Рой говорит, что делать метод публичным (для проверки) не обязательно плохо, поэтому я буду держать его открытым.
Итак, я написал тест для GetOrders и утверждаю возвращаемое значение ShouldBe список заказов.Тем не менее, я считаю, что мне нужно реструктурировать свой тест для OnViewLoad_GetOrders, указав значение, полученное из GetOrders, и подтвердив результаты моих действий с этим объектом.
Может кто-нибудь подтвердить и объяснить?