J'ai du code de test affirmant duplicate user.cs: p> userpository.cs: p> userpositoryTestS.cs: p> Quand j'exécute ce test d'unité, assert.throws () échec
Attendu: système.invalidoperationException
Réel: (aucune exception n'a été lancée) p>
blockQuote> du débogueur, utilisateur code> s ne peut pas être créé via mon
USEREPOSitory code>.
xunit.sdk.themrowsException code> est lancé (c'est-à-dire mon
InvalidOperationException code> était pas fort> jeté): p>
getDuplicateasync () code> a été évalué mais lorsque la requête LINQ a été exécutée, le résultat n'a jamais été retourné et aucune exception n'a été lancée. Quelqu'un peut-il aider? P> p>
3 Réponses :
assert.thRrows code> (au moins sur la version 1.9.2) n'est pas au courant de l'ASYNC. Ceci a été corrigé dans la version 2, qui a maintenant un Gist de Haacked . P> P>
Je suis assez sûr que j'ai vu l'équipe Xunit mentionner que la version 2.x sera async code> -aware.
@Erikschierboom Vous avez raison, je viens de regarder leur code source et j'ai mis à jour mon message.
C'est un travail ok autour. Il a juste une sémantique légèrement différente que celle de Xunit, car cela attrapera également toutes les exceptions dérivées de T où Xunit n'atteignit que T et non des types dérivés.
Cela fonctionne pour moi:
Assert.Throws<AbpValidationException>(() => _personAppService.CreatePersonAsync(new CreatePersonInput { Name = null }));
Cela ne se produira que si CreateEppersonasync code> n'est pas réellement asynchrone; Et si c'est la mise en œuvre, je lance l'exception lorsqu'il est appelé, plutôt que de renvoyer une tâche
code> qui représente l'exception. Dans des situations réelles, ce dernier est susceptible d'être ce qui se passe réellement, c'est ce qui doit être testé. Ce n'est qu'une option s'il est important que la réelle implémentation ait réellement le comportement précédent.
Xunit Maintenant gérer ASSERT.THROWASYNC par défaut P>
Quelle version xunit utilisez-vous?
Dupliqué possible de Comment gérer les exceptions levées Par tâches de Xunit .Net's Astert.thRows?
@Stephencleary Avec votre permission, je mettrai à jour votre réponse sur ce lien pour souligner que Xunit 2 a abordé ce problème.
@Wim j'utilise
xunit code> 1.9.2. @DCastro a eu raison, j'ai mis à jour mon
Xunit code> et le problème a été parti.