说我有像服务,以便:现在单元测试嵌套方法
public class MyService : IMyService
{
public void DoStuff(IDependency dependency, string value)
{
dependency.SomeMethod(value, true);
DoOtherStuff(dependency);
}
public void DoOtherStuff(IDependency dependency)
{
// do some stuff
}
}
,当单元测试MyService
,我可以模拟的依赖性足够容易地和测试被适当地使用的依赖性:
public void MyServiceTest()
{
// Arrange
var mockDependency = new Mock<IDependency>();
mockDependency.Setup(m => m.SomeMethod());
var service = new MyService();
// Act
service.DoStuff(mockDependency.Object, "value");
// Assert
mockDependency.Verify(v => v.SomeMethod(), Times.Once);
}
如何测试服务电话DoOtherStuff
?或者这是一种不好的模式?什么是正确的方法来做到这一点?
作为一个说明(故意在回答身体不把),如果该方法是虚拟的,你可以在您的测试覆盖它们。但是,我不认为这在大多数情况下是非常有用的。我认为我们为什么关心某些事情的核心是Times.Once,因为它是类之间的交互。另外'Delegate.CreateDelegate数据(Metadata>等etc'。也有黑暗的一面的方式,但我不是非常熟悉。 –