Używanie Moq do sprawdzania połączeń odbywa się we właściwej kolejności
Muszę przetestować następującą metodę:
CreateOutput(IWriter writer)
{
writer.Write(type);
writer.Write(id);
writer.Write(sender);
// many more Write()s...
}
Stworzyłem Moq'dIWriter
i chcę mieć pewność, żeWrite()
metody są wywoływane we właściwej kolejności.
Mam następujący kod testowy:
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));
Jednak drugie połączenie doWrite()
wCreateOutput()
(aby napisaćid
wartość) rzuca aMockException
z wiadomościąWywołanie IWriter.Write () nie powiodło się z udawanym zachowaniem Ścisłe. Wszystkie wywołania na makiecie muszą mieć odpowiednią konfigurację.„
Trudno mi też znaleźć jakąkolwiek definitywną, aktualną dokumentację / przykłady sekwencji Moq.
Czy robię coś złego lub czy nie mogę ustawić sekwencji za pomocą tej samej metody? Jeśli nie, czy istnieje alternatywa, której mogę użyć (najlepiej używając Moq / NUnit)?