我应该单元测试一个简单的更新应用服务吗?

时间:2014-03-10 17:06:25

标签: c# unit-testing viewmodel onion-architecture

我是否应该对应用服务进行单元测试,如下所示?

public void Update(UserAccountViewModel viewModel)
    {
        var instance = Mapper.Map<UserAccountViewModel, UserAccount>(viewModel);
        _userAccountService.UpdateInstance(instance);
    }

正如您所看到的,它只是采用视图模型,使用AutoMapper将其映射到域模型并调用域服务方法来更新对象。如果我应该进行单元测试,我很难看到单元测试的内容!这或许可以回答我自己的问题,因为你可以说除了AutoMapper的工作之外没什么可以测试的,我相信我不应该进行单元测试,因为其他人的工作正确吗?

编辑: 谢谢你的回复。我已经使用了类似的东西,只是测试一次调用UpdateInstance方法:

[TestMethod]
public void GivenViewModelWhenEditingAUserThenTheUpdateInstanceDomainServiceMethodIsCalledOnce()
{
    // Arrange
    _userAccounts.Clear();
    var viewModel = new Mock<UserAccountViewModel>();

    // Act
    _userAccountAppService.Update(viewModel.Object);

    // Assert
    _userAccountService.Verify(e => e.UpdateInstance(It.IsAny<UserAccount>()), Times.Once());
}

2 个答案:

答案 0 :(得分:0)

这并不是要确保每个类中的每个公共方法都有一个测试。确保涵盖所有行为更为重要。

答案 1 :(得分:0)

“单元测试的内容”是一个非常主观的问题。答案的范围从“没有;这是浪费时间”到“始终100%代码覆盖率”。我赞成务实的单元测试。在这种情况下,Update方法本身做的很少,IMO,它不值得进行单元测试。您只是在测试AutoMapper,它应该已经由其创建者进行测试。

单元测试真实用户帐户服务的UpdateInstance方法很可能很有价值。