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

本文关键字:应用服务 更新 单元测试 简单 一个 我应该 | 更新日期: 2023-09-27 17:49:14

我应该像下面这样简单地对应用服务进行单元测试吗?

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());
}

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

"单元测试什么"是一个非常主观的问题。答案从"没什么;"总是100%的代码覆盖率是浪费时间"。我喜欢实用的单元测试。在这种情况下,Update方法本身做的很少,在我看来,它不值得进行单元测试。你只是在测试AutoMapper,它应该已经被它的创建者测试过了。

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

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