(接口VS抽象類)我有下面的代碼不一致的行爲使用fakeiteasy
public interface IFoo
{
void Execute();
}
public abstract class FooBar: IFoo
{
public void Execute()
{
OnExecute();
}
public abstract void OnExecute();
}
和下面的測試案例來測試Execute()
方法
[Fact]
public void When_execute_method_called_Expect_executionTime_is_set()
{
var sutMethod = A.Fake<FooBar>();
A.CallTo(sutMethod).
Where(x => x.Method.Name == "OnExecute").
Invokes(x => Thread.Sleep(100)));
sutMethod.Execute();
Assert.NotEqual(0, sutMethod.Result.ExecutionTime.Ticks);
}
sutMethod.Execute();
呼叫會去FooBar.Execute()
後來我決定把界面變成一個抽象類
public abstract class IFoo
{
public abstract void Execute();
}
public abstract class FooBar:IFoo
{
public override void Execute()
{
OnExecute();
}
public abstract void OnExecute();
}
現在sutMethod.Execute();
調用不調用FooBar.Execute()
我想FakeItEasy將手柄接口和抽象類爲equal.What我缺少什麼?
更新 @布萊爾康拉德規定的行爲
推理是否有可能作出改變最小的測試用例來獲得原始行爲回來?
感謝