que necesito para probar el siguiente método:El uso Moq para verificar las llamadas se realizan en el orden correcto
CreateOutput(IWriter writer)
{
writer.Write(type);
writer.Write(id);
writer.Write(sender);
// many more Write()s...
}
He creado un Moq'd IWriter
y quiero asegurar que los métodos se llaman en Write()
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 a Write()
en CreateOutput()
(para escribir el valor id
) lanza un MockException
con el mensaje "IWriter.Write() ha fallado con la invocación simulacro de comportamiento 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 las secuencias de Moq.
¿Estoy haciendo algo mal o no puedo configurar una secuencia con el mismo método? Si no es así, ¿hay alguna alternativa que pueda usar (preferentemente con Moq/NUnit)?
posible duplicado de [Cómo probar orden llamada al método con Moq] (http://stackoverflow.com/questions/1765738/how- to-test-method-call-order-with-moq) – sloth
La [última versión de Moq, v4.2] (https://github.com/Moq/moq) ha "mejorado la simulación de pruebas de secuencia de invocación" de acuerdo con su [notas de la versión] (https://github.com/Moq/moq4/blob/master/ReleaseNotes.md). –
Estoy usando un v.4.2.x y puedo confirmar que la funcionalidad de secuencia me funciona. –