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)?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage