假设你有一个方法:
public void Save(Entity data)
{
this.repositoryIocInstance.EntitySave(data);
}
你会写一个单元测试吗?
public void TestSave()
{
// arrange
Mock<EntityRepository> repo = new Mock<EntityRepository>();
repo.Setup(m => m.EntitySave(It.IsAny<Entity>());
// act
MyClass c = new MyClass(repo.Object);
c.Save(new Entity());
// assert
repo.Verify(m => EntitySave(It.IsAny<Entity>()), Times.Once());
}
因为以后如果你改变方法的实现来做更“复杂”的事情,比如:
public void Save(Entity data)
{
if (this.repositoryIocInstance.Exists(data))
{
this.repositoryIocInstance.Update(data);
}
else
{
this.repositoryIocInstance.Create(data);
}
}
...您的单元测试会失败,但它可能不会破坏您的应用程序...
问题
我是否应该费心在没有任何返回类型的方法上创建单元测试*或**不要更改内部模拟之外的任何内容?