從派生類的角度嘲笑基類是不可能的。在你的簡單例子中,我會建議兩個選項之一。
選項1:如果MyDerivedClass
確實不應該在意什麼MyBaseClass
是否合格,那麼請使用依賴注入!耶抽象!
public class MyClass
{
private readonly IUsedToBeBaseClass myDependency;
public MyClass(IUsedToBeBaseClass myDependency){
_myDependency = myDependency;
}
public void Method2()
{
_myDependency.Method1();
}
}
別處在測試的土地......
[TestClass]
public class TestMyDependency {
[TestMethod]
public void TestThatMyDependencyIsCalled() {
var dependency = new Mock<IUsedToBeBaseClass>();
var unitUnderTest = new MyClass(dependency.Object);
var unitUnderTest.Method2();
dependency.Verify(x => x.Method1(), Times.Once);
}
}
選項2:倘若MyDerivedClass
需要知道什麼MyBaseClass
在做什麼,然後測試MyBaseClass
是做正確的事。
在替代試驗土地...
[TestClass]
public class TestMyDependency {
[TestMethod]
public void TestThatMyDependencyIsCalled() {
var unitUnderTest = new MyDerivedClass();
var unitUnderTest.Method2();
/* verify base class behavior #1 inside Method1() */
/* verify base class behavior #2 inside Method1() */
/* ... */
}
}
爲什麼一個要求,即基本方法被調用?如果你嘲笑它,所有你正在驗證_mock_調用基本方法。你只是驗證'base.'語法是否工作,或者你是否需要繼承的類來調用基類? –
另外,您應該只測試_results_是否正確。測試使用特定的_implementation_通常表示設計不好。 –
基本方法是否有可驗證的副作用? –