對於單元測試,我使用的是NUnit 2.6和Moq 4.0。有一個關於虛擬成員的特殊情況,其中Moq的代理對象不會將方法調用傳遞給實際的實現(可能是通過設計)。舉例來說,如果我有一類...嘲笑Moq中的虛擬成員
public class MyClass {
protected virtual void A() {
/* ... */
}
protected virtual void B(...) {
/* ... */
}
}
...我使用起訂量來覆蓋在我的測試夾具GetSomethingElse
的A()
方法...
var mock = new Mock<MyClass>();
mock.Protected().Setup("A").Callback(SomeSortOfCallback);
...使用模擬的A
方法出色地工作;然而,如果該方法中的任何內容都會調用not-mocked方法B
,那麼即使MyClass
中存在實際實現,該方法也不會執行任何操作和/或返回默認值。
有沒有辦法解決這個問題?我使用Moq錯了嗎?
由於提前,
曼尼
如果你還想嘲笑其他方法呢? – 2012-08-31 10:33:05
@LouisRhys很確定這不會干擾它 - 如果你明確地模擬一些東西,CallBase設置永遠不會起作用。 – 2012-09-01 09:00:29