繁体   English   中英

最小起订量超时异常 C#

[英]Moq Timeout Exception C#

我在 C# 中使用 Moq 测试框架,我尝试创建一个单元测试,其中我有一个方法可以通过不可靠的网络调用远程服务器上的服务。

在我尝试进行单元测试的方法中,我有以下代码:

    Task.Factory.StartNew(() => this.remoteClient.SomeMethod(userDetails)).Wait(Timespan.FromSeconds(10));

单元测试的目的是模拟服务未能在 10 秒内响应的超时。

到目前为止,我有如下单元测试,它确实有效,但我觉得它不太正确。

   mockRemoteClientService.Setup(r =>r.SomeMethod(It.IsAny<string>())).Callback(() => Thread.Sleep(11000));

任何人都可以告诉我我采取的方法是正确的还是有其他方法可以做到这一点?

您可以使用取消令牌来设置实际超时。

当您想模拟服务调用以模拟超时时,您可以使用Throws (或ThrowsAsync在异步方法的情况下)抛出TaskCancelledExceptionTimeOutException如下所示:

mockRemoteClientService.Setup(x => x.SomeMethod(It.IsAny<string>())).Throw(new TaskCancelledException());

然后Assert您正确处理了响应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM