Уровень службы приложения: модульные тесты, тесты интеграции или и то, и другое?

У меня есть несколько методов на уровне службы приложений, которые делают такие вещи:

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 */
}

Кажется, Спорный вопрос, добавляют ли эти модульные тесты ценность, которая стоит затраченных усилий. Я совершенно уверен, что уровень сервисов приложений должен быть протестирован на интеграцию.

Следует ли тестировать уровень сервисов приложений на этом уровне детализации или достаточно ли тестов интеграции?

14
задан sarnold 13 July 2011 в 08:44
поделиться