我应该对一个简单的更新应用服务进行单元测试吗?
本文关键字:应用服务 更新 单元测试 简单 一个 我应该 | 更新日期: 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
方法进行单元测试很可能是有价值的。
这并不是要确保每个类中的每个公共方法都有一个测试。更重要的是要确保覆盖所有的行为。