說我有像服務,以便:現在單元測試嵌套方法
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'。也有黑暗的一面的方式,但我不是非常熟悉。 –