2016-06-30 19 views
1

Ich bin auf der Suche nach einer Möglichkeit, eine Methode zu verspotten, so dass das Ergebnis beim mehrfachen Aufruf unterschiedlich ist. Genauer gesagt, was ich danach suche, ist eine Methode zu verspotten, so dass das dritte Mal, dass es aufgerufen wird, ich gegen dieses Ergebnis behaupten möchte.Wie kann man eine Folge von Aufrufen an dieselbe Methode spotten, um in AutoFixture mit NSsubstitute unterschiedliche Werte zurückzugeben?

Diese Syntax ist nicht richtig, aber simuliert, was ich erreichen will:

var foo = Fixture.Freeze<IFoo>(); 
foo.Exists(Arg.Any<object>()).Returns("firstcall").SecondCall("secondcall").ThirdCall("thirdcall"); 

Können Sie tun dies in AutoFixture?

EDIT: Wie von Mark darauf hingewiesen, ist dies eine Frage im Zusammenhang mit NSsubstitute statt AutoFixture selbst. Ich habe den Titel aktualisiert.

Antwort

2

fand ich die Antwort, bevor die Frage vorlegt, so dass ich die Antwort hier posten:

Fixture.Freeze<IFoo>() 
    .Exists(Arg.Any<object>()) 
    .Returns("default", "firstcall", "secondcall", "thirdcall"); 

Nun, wenn Exists() dreimal aufgerufen wird, wird die Antwort "firstcall" dann "secondcall" dann "thirdcall" werden. Jeder nachfolgende Anruf erhält "default".

+0

AFAICT, dies ist eine Funktion der zugrundeliegenden Dynamic-Mock-Bibliothek, die Sie verwenden (NSubstitute?), Und hat wenig mit AutoFixture zu tun. –

+0

@MarkSeemann Ah ja das stimmt, danke. Wird die Antwort aktualisieren. –