2011-03-15 13 views
8

Estoy tratando de configurar excepciones para un método que se llama dos veces seguidas con diferentes parámetros. De esta manera:Moq expectativas sobre el mismo método dos veces seguidas

var adapter = new Mock<IKeyAdapter>(); 
    adapter.Setup(x => x.ImportKey(It.IsAny<Guid>(), key, It.IsAny<string>(), publicTicket)).Returns(Guid.NewGuid()); 
    adapter.Setup(x => x.ImportKey(It.IsAny<Guid>(), key, It.IsAny<string>(), privateTicket)).Returns(Guid.Empty); 

Me wa el primero en pasar y el segundo a fallar. Actualmente parece que la segunda configuración sobrescribe la primera.

¿Esto es posible con Moq?

Respuesta

6

Tiene razón en que la segunda expectativa es sobrescribir la primera. Esto parece ser una limitación actual. Algunas soluciones se han ideado como sigue:

  • Moq Sequences que pueden obtenida here en github.
  • Sobrecarga IExpect.Returns para tomar una expresión en lugar de un valor tal como se describe here, y elaborado en here y here.
+0

Agradable. Mucho más legible que el estado-bandera-y-condicional que cociné cuando me enfrenté al mismo problema. –

Cuestiones relacionadas