Usando Moq para verificar que las llamadas se realicen en el orden correcto
Necesito probar el siguiente método:
CreateOutput(IWriter writer)
{
writer.Write(type);
writer.Write(id);
writer.Write(sender);
// many more Write()s...
}
He creado un Moq'dIWriter
y quiero asegurar que laWrite()
Los métodos se llaman en el orden correcto.
Tengo el siguiente código de prueba:
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));
Sin embargo, la segunda llamada aWrite()
enCreateOutput()
(escribir elid
valor) arroja unMockException
con el mensaje "La invocación de IWriter.Write () falló con un comportamiento falso Estricto. Todas las invocaciones en el simulacro deben tener una configuración correspondiente.".
También me resulta difícil encontrar documentación / ejemplos definitivos y actualizados de secuencias Moq.
¿Estoy haciendo algo mal o no puedo configurar una secuencia usando el mismo método? Si no, ¿hay alguna alternativa que pueda usar (preferiblemente usando Moq / NUnit)?