[英]Specflow steps with await for async API
我们试图在DoAyncStuff()
方法中发生故障时尝试以下方法来打破测试:
[Given(@"There is something")]
public async Task GivenSomething()
{
await DoStuff();
}
private async Task DoStuff()
{
await Task.Run(() => Thread.Sleep(1000));
throw new ApplicationException("Boom");
}
但它实际上是一个快乐的绿色运行,直到你使用.Wait()
或.Result
:
[Given(@"There is something")]
public void GivenSomething()
{
DoStuff().Wait();
}
问题似乎出现在NUnit generated-spec中,如下所示:
public virtual void SomethingAsync()
{
...
testRunner.Given("There is something", ...);
...
}
这似乎与以下代码一起使用:
public virtual async Task SomethingAsync()
{
...
await this.ScenarioSetup(scenarioInfo);
...
}
上面的代码是手动编辑的自动生成的文件,所以我实际上正在寻找一种自动生成以下代码的方法。
该文档似乎是asyncronous API唯一可用的选项,但实际上它适用于Silverlight,据我所知使用某种API,而我们更喜欢使用本机C#await关键字。
有没有办法处理本地async/await
是SpecFlow步骤?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.