Мы пытаемся, чтобы получить следующий scenrio шага сломать испытание неудачи случае происходит внутри DoAyncStuff()
метода:Specflow шагов с AWAIT для асинхронной API
[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 генерируемой спецификации, которая выглядит следующим образом:
public virtual void SomethingAsync()
{
...
testRunner.Given("There is something", ...);
...
}
, который, кажется, работает со следующим кодом:
public virtual async Task SomethingAsync()
{
...
await this.ScenarioSetup(scenarioInfo);
...
}
Код выше отредактирован вручную автоматически сгенерированный файл, так что я на самом деле искал способ, чтобы автоматически производить следующий код.
The documentation представляется единственным вариантом, доступным для асинхронного API, но на самом деле это для Silverlight, и, насколько я понимаю, использует какой-то API, хотя мы предпочли бы использовать родное ключевое слово C#.
Есть ли способ обработки изначально async/await
- это шаги SpecFlow?
взгляните на [это] (https://github.com/techtalk/SpecFlow/pull/647) выпуск –