我得到一个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);
}
Run Code Online (Sandbox Code Playgroud)
现在我希望其中一个调用抛出异常而其他调用返回异常.有没有人这样做过?
如果我这样做
mock.Setup(m => m.SomeMethod())
.Throws(new Exception());
mock.Setup(m => m.SomeMethod())
.Returns("ok");
Run Code Online (Sandbox Code Playgroud)
然后第一次设置被覆盖,只有第二次设置仍然存在.
我在开发重试代理时使用了回调链接.
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));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5019 次 |
| 最近记录: |