0
我有一个小的类有一个小的方法,当事件引发时被调用。FakeItEasy错误:没有打电话给假对象
public class DemoUI
{
public DemoUI(TestRunner runner)
{
runner.UserMessage += OnEventRunThis;
}
protected void OnEventRunThis(object sender, UserMessageEventArgs e)
{
Console.WriteLine(e.Message);
}
}
现在在我的测试中,我创建TestRunner
类型的对象,并对其执行Execute
方法。这提出了一个事件,然后拦截并且OnEventRunThis
忠实地运行打印消息。但Fake it easy报告错误:“没有对虚假对象进行调用”。
var _sutTestRunner = new TestRunner();
var fakeDemoUI = A.Fake<DemoUI>(x => x.WithArgumentsForConstructor(() => new DemoUI(_sutTestRunner)));
_sutTestRunner.Execute();
A.CallTo(fakeDemoUI).Where(x => x.Method.Name == "OnEventRunThis").MustHaveHappened();
方法OnEventRunThis
获取调用因为我看到越来越印刷在输出窗口输出。所以在我的有限理解中,这意味着已经对Fake对象进行了调用。
或者我错过了什么?或者有没有其他方法可以做到这一点?
使测试重构友好: A.CallTo(()=> fakeDemoUI.OnEventRunThis(A
我打算建议这个@Urs,但它需要公开'OnEventRunThis'。 –
使方法虚拟解决问题。执行确实发生在A.CallTo之前。在输入问题时我很累。 – NotAgain