Предположим, у меня есть следующий класс:
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, и я хотел бы написать тест, который проверяет, вызывается ли ChildMethod1 (), когда я вызываю BaseMethod (), а runMethod1 имеет значение true. Можно ли создать реализацию TestBase с Moq, вызвать BaseMethod () и убедиться, что ChildMethod был вызван в реализации Moq?
[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
}