Ottengo un oggetto Moq per restituire valori diversi su chiamate successive a un metodo. Questo è il metodo di estensione:Restituzione di risultati diversi o generazione di eccezioni da chiamate successive 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);
}
Ora voglio che una delle chiamate generi un'eccezione mentre altri restituiscono qualcosa. Qualcuno l'ha già fatto prima?
se faccio questo
mock.Setup(m => m.SomeMethod())
.Throws(new Exception());
mock.Setup(m => m.SomeMethod())
.Returns("ok");
poi la la prima configurazione viene sovrascritto e solo la seconda impostazione persiste.
Questa soluzione (piuttosto contorta) non è più necessario in quanto Moq ha il supporto per il metodo SetupSequence. Vedi la mia risposta qui sotto per un esempio. – nashwan