Mit Moq überprüfen, ob die Anrufe in der richtigen Reihenfolge getätigt wurden
Ich muss die folgende Methode testen:
CreateOutput(IWriter writer)
{
writer.Write(type);
writer.Write(id);
writer.Write(sender);
// many more Write()s...
}
Ich habe ein Moq'd erstelltIWriter
und ich möchte sicherstellen, dass dieWrite()
Methoden werden in der richtigen Reihenfolge aufgerufen.
Ich habe folgenden Testcode:
var mockWriter = new Mock<IWriter>(MockBehavior.Strict);
var sequence = new MockSequence();
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedType));
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedId));
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedSender));
Allerdings ist der zweite Aufruf anWrite()
imCreateOutput()
(um das zu schreibenid
value) wirft aMockException
mit der Nachricht "IWriter.Write () - Aufruf fehlgeschlagen mit falschem Verhalten Strict. Alle Aufrufe auf dem Mock müssen eine entsprechende Konfiguration haben.".
Ich finde es auch schwierig, eine definitive, aktuelle Dokumentation / Beispiele von Moq-Sequenzen zu finden.
Mache ich etwas falsch oder kann ich mit der gleichen Methode keine Sequenz erstellen? Wenn nicht, gibt es eine Alternative, die ich verwenden kann (vorzugsweise mit Moq / NUnit)?