У меня есть куча методов на моем уровне сервисов приложений, которые делают такие вещи:
public void Execute(PlaceOrderOnHoldCommand command)
{
var order = _repository.Load(command.OrderId);
order.PlaceOnHold();
_repository.Save(order);
}
И в настоящее время у меня есть куча модульных тестов:
[Test]
public void PlaceOrderOnHold_LoadsOrderFromRepository()
{
var repository = new Mock<IOrderRepository>();
const int orderId = 1;
var order = new Mock<IOrder>();
repository.Setup(r => r.Load(orderId)).Returns(order.Object);
var command = new PlaceOrderOnHoldCommand(orderId);
var service = new OrderService(repository.Object);
service.Execute(command);
repository.Verify(r => r.Load(It.Is<int>(x => x == orderId)), Times.Exactly(1));
}
[Test]
public void PlaceOrderOnHold_CallsPlaceOnHold()
{
/* blah blah */
}
[Test]
public void PlaceOrderOnHold_SavesOrderToRepository()
{
/* blah blah */
}
Кажется спорным, добавляют ли эти модульные тесты значение, которое стоит усилий. Я совершенно уверен, что уровень сервиса приложений должен быть протестирован на интеграцию.
Если уровень сервиса приложения должен быть протестирован на этот уровень детализации или достаточны тесты интеграции?