2017-06-02 1 views
0

En utilisant NSubstitute, comment simulez-vous qu'une exception est levée dans une méthode retournant void?NSubstitute - mock lançant une exception dans la méthode renvoyant void

Disons que notre signature de la méthode ressemble à ceci:

void Add(); 

Voilà comment NSubstitute docs disent de se moquer des exceptions pour lancer les types de retour de vide. Mais cela ne compile pas :(

myService 
     .When(x => x.Add(-2, -2)) 
     .Do(x => { throw new Exception(); }); 

Alors, comment voulez-vous accomplir cela?

+0

Supprimer arguments parce que votre méthode ne les a pas – Fabio

Répondre

2

Retirer les arguments de méthode .Add dans la configuration de remplacement.
Ci-dessous l'échantillon compilera et le travail pour la méthode vide sans arguments

var fakeService = Substitute.For<IYourService>(); 
fakeService.When(fake => fake.Add()).Do(call => { throw new ArgumentException(); }); 

Action action =() => fakeService.Add(); 
action.ShouldThrow<ArgumentException>(); // Pass 

Et même que dans la documentation montré compilera pour la méthode vide avec des arguments

var fakeService = Substitute.For<IYourService>(); 
fakeService.When(fake => fake.Add(2, 2)).Do(call => { throw new ArgumentException(); }); 

Action action =() => fakeService.Add(2, 2); 
action.ShouldThrow<ArgumentException>(); // Pass 

Suppose que l'interface est

public interface IYourService 
{ 
    void Add(); 
    void Add(int first, int second); 
}