Silverlight测试框架的EnqueueConditional如何工作?

时间:2011-04-14 23:03:14

标签: silverlight unit-testing

所以,假设我的测试类似于

[TestMethod]
[Asynchronous]
public void MyTest() {

    MyObject m = new MyObject();
    m.DoAsyncStuff();

    EnqueueConditional(() => m.TaskComplete);
    EnqueueCallback(() => Assert.IsTrue(m.ValidState));
    EnqueueTestComplete();
}

EnqueueConditional如何运作?假设MyObject没有属性更改通知或任何内容。我假设EnqueueConditional定期轮询变量?但我不确定。

1 个答案:

答案 0 :(得分:3)

这正是它的作用。它每秒多次轮询m.TaskComplete变量(我不知道有多少)。这是一个黑客,你不会想要它在生产代码中,但它适用于测试框架,并且它确实简化了许多其他代码。

例如,在生产代码中,您可能希望使MyObject实现INotifyPropertyChanged,然后使用Reactive Extensions订阅INPC通知。但对于那些在测试代码中无处不在的简单条件,这将是一项额外的工作,而且我认为Jeff Wilcox对他如何实现这一点做了正确的调用,不过它可能是hacky。