Silverlight单元测试,在嵌套方法中处理异步调用

时间:2011-05-04 09:52:47

标签: silverlight unit-testing specflow

在为silverlight创建单元测试时,测试框架似乎具有内置功能,以帮助进行异步调用,但仅限于测试方法。如果在您呼叫的那个方法的子方法中存在异步调用,该怎么办?

作为一个例子,我们使用Specflow来测试我们的ViewModel,我们想要调用命令的Execute方法,然后该命令异步调用Web服务。如何在断言结果之前确保while命令已完成?

作为示例,这是命令

    [Asynchronous]
    [When(@"I press calculate")]
    public void WhenIPressCalculate()
    {
        _helloWorldViewModel.CalculateCommand.Execute(null);
    }

我需要等待整个命令完成才能继续。

2 个答案:

答案 0 :(得分:0)

使用执行已完成的退出条件在同一方法中创建一个循环。

答案 1 :(得分:0)

在调用网络服务时循环不起作用,因为回调被编组到UI线程,如果它正在循环一个条件,它会在回调等待线程完成时创建死锁。 / p>

无论如何,我们把这个问题丢了。事实证明,specflow人员正在努力解决这个问题,并且正在制定解决方案。我们使用预发布版本。

我在这里写了一篇关于它的博客文章http://rburnham.wordpress.com/2011/05/13/testing-silverlight-asynchronous-code-with-specflow/

这可能会改变,因为这是通过预发布版本完成的,希望如果有的话,我会有时间更新它。