Obtengo un objeto Moq para devolver valores diferentes en llamadas sucesivas a un método. Esto se hace mediante este método de extensión:Devolver resultados diferentes o lanzar excepciones de llamadas sucesivas a Moq Mock
public static void ReturnsInOrder<T, TResult>(this ISetup<T, TResult> setup, params TResult[] results) where T : class
{
setup.Returns(new Queue<TResult>(results).Dequeue);
}
Ahora quiero que una de las llamadas genere una excepción mientras que otras devuelven algo. ¿Alguien ha hecho esto antes?
si hago esto
mock.Setup(m => m.SomeMethod())
.Throws(new Exception());
mock.Setup(m => m.SomeMethod())
.Returns("ok");
entonces la primera configuración se sobrescribe y sólo la segunda configuración persiste.
Esta solución (más bien complicado) ya no es necesario ya que Moq tiene soporte para el método SetupSequence. Vea mi respuesta a continuación para un ejemplo. – nashwan