【发布时间】:2015-04-23 06:35:53
【问题描述】:
我有一个小类,它有一个小方法,在引发事件时会被调用。
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 报错“No call were made to the fake object”。
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 对象进行了调用。
或者我错过了什么?或者有没有其他方法可以做到这一点?
【问题讨论】:
标签: c# unit-testing mocking fakeiteasy