Nous essayons d'obtenir l'étape scenrio suivante pour briser le test en échec de cas se produit au sein de la méthode DoAyncStuff()
:Specflow étapes avec await pour API async
[Given(@"There is something")]
public async Task GivenSomething()
{
await DoStuff();
}
private async Task DoStuff()
{
await Task.Run(() => Thread.Sleep(1000));
throw new ApplicationException("Boom");
}
Mais il est en fait un heureux vert courir jusqu'à ce que vous utiliser .Wait()
ou .Result
:
[Given(@"There is something")]
public void GivenSomething()
{
DoStuff().Wait();
}
le problème semble être dans le NUnit généré spec qui ressemble à ceci:
public virtual void SomethingAsync()
{
...
testRunner.Given("There is something", ...);
...
}
qui semble fonctionner avec le code suivant:
public virtual async Task SomethingAsync()
{
...
await this.ScenarioSetup(scenarioInfo);
...
}
Le code ci-dessus est le fichier généré auto-édité manuellement, donc je suis à la recherche d'un moyen de produire du code suivant automatiquement.
The documentationThe documentation semble être la seule option disponible pour l'API asynchrone mais c'est en fait pour Silverlight et autant que je sache, utilise une sorte d'API, alors que nous préférons utiliser le mot-clé n # C# wait.
Existe-t-il un moyen de gérer nativement? async/await
est les étapes SpecFlow?
jeter un oeil à [this] (https://github.com/techtalk/SpecFlow/pull/647) version –