次のクラスがあるとします。
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
}
}
私は Moq を使用しており、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
}