Возврат различных результатов или выдавание исключения от последовательных вызовов до Насмешки Moq

Я получаю объект Moq возвратить различные значения на последовательных вызовах к методу. Это сделано этим дополнительным методом:

public static void ReturnsInOrder<T, TResult>(this ISetup<T, TResult> setup, params TResult[] results) where T : class
{
    setup.Returns(new Queue<TResult>(results).Dequeue);
}

Теперь я хочу, чтобы один из вызовов выдал исключение, в то время как другие возвращают что-то. Кто-либо сделал это прежде?

Если я делаю это

mock.Setup(m => m.SomeMethod())
    .Throws(new Exception());
mock.Setup(m => m.SomeMethod())
    .Returns("ok");

затем первая установка перезаписывается, и только вторая установка сохраняется.

14
задан ogborstad 22 June 2010 в 13:21
поделиться

2 ответа

Я использовал цепочку обратных вызовов при разработке повторного прокси.

var src = new Mock<ITest>();
src.Setup(s => s.RaiseError()).Callback(() => 
src.Setup( s => s.RaiseError())).Throws<Exception>();

const int retryCount = 1;
var proxy = RetryProxy.MakeFor(src.Object, retryCount);

proxy.RaiseError();
src.Verify(s => s.RaiseError(), Times.Exactly(retryCount+1));
9
ответ дан 1 December 2019 в 09:12
поделиться
8
ответ дан 1 December 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: