Sie haben programmiert nur das Stub-Objekt für zwei getrennte Anrufe. Wenn Sie stubObj.Get erneut aufrufen, sollten Sie bekommen, was Guid.NewGuid
erzeugt. Sie können Ihr gefälschtes Objekt für eine beliebige Anzahl von Aufrufen unterschiedlicher Art vorbereiten. Aus diesem Grund ist es nicht sinnvoll, zu erwarten, dass der letzte .Stub
Aufruf für einen gegebenen Aufruf vorherige .Stub
Bings dieses Aufrufs ersetzt.
In Ihrem Testcode, der kurz und ordentlich sein sollte, sollte es nie einen Fall geben, in dem Sie eine solche Programmierung des Mocks so rückgängig machen müssen, wie Sie es scheinbar tun möchten.
Wenn was zurückgegeben werden muss, ist eine bedingte Sache, die abhängig von anderen Bits Ihres Test-Codes über mehrere Aufrufe an diesen Block von Code, das letzte, was Sie wollen, ist magische passiert, damit die Leser herausfinden müssen, was Sie gemeint. Wenn es bedingt ist, sollten Sie es deutlich machen.
Und dann, wenn Sie es klar gemacht haben, es Refactoring, wie Sie nicht Bedingte Logik in Tests haben sollten (siehe xUnit Testmuster)
Ich verstehe nicht ganz, warum Sie eine Erwartung ‚überschreiben‘ wollen. Das Verhalten scheint mir in Ordnung zu sein. Nur eine Spekulation von mir: Wenn Sie versuchen, einen Stub für eine andere Behauptung wiederzuverwenden oder zu recyceln, dann sollten Sie das nicht tun. Das wäre keine gute Übung, um Tests zu schreiben. –