假設我有下面的類:驗證保護的抽象方法是使用起訂量
public class TestBase
{
public bool runMethod1 { get; set; }
public void BaseMethod()
{
if (runMethod1)
ChildMethod1();
else
ChildMethod2();
}
protected abstract void ChildMethod1();
protected abstract void ChildMethod2();
}
我也有類
public class ChildTest : TestBase
{
protected override void ChildMethod1()
{
//do something
}
protected override void ChildMethod2()
{
//do something completely different
}
}
我使用起訂量,我想寫當我調用BaseMethod()並且runMethod1爲true時,會調用驗證ChildMethod1()的測試。是否可以使用Moq創建TestBase實現,調用BaseMethod()並驗證Moq實現上是否調用了ChildMethod?
[Test]
public BaseMethod_should_call_correct_child_method()
{
TestBase testBase;
//todo: get a mock of TestBase into testBase variable
testBase.runMethod1 = true;
testBase.BaseMethod();
//todo: verify that ChildMethod1() was called
}
這個例子看起來像你正在測試CLR而不是你自己的代碼。這是你真正想要的嗎? – 2008-12-24 02:19:19
實際代碼更復雜。我根據對象的狀態在子類中調用不同的方法。我只想在這裏寫一個簡單的例子,但我會更新它,所以還有更多的東西需要測試。 – 2008-12-24 02:24:48