首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用NSubstitute进行单元测试Hangfire

使用NSubstitute进行单元测试Hangfire
EN

Stack Overflow用户
提问于 2021-10-15 15:37:30
回答 2查看 76关注 0票数 0

我正在尝试对我的类进行单元测试,其中包括一个后台工作。到目前为止,我正在测试的方法将一个作业排入队列,如下所示:

代码语言:javascript
运行
复制
public void SendSms(SmsContent content){
      .... 
      _backgroundJobClient.Enqueue<ISms>(x => x.Send(content));
      ....
}

我的第一个单元测试检查BackgroundJobClient是否被调用,如下所示:

代码语言:javascript
运行
复制
 Assert.Equal(1,_backgroundJobClient.ReceivedCalls().Count());

所有的工作都很好,但现在我想检查所有的参数,如果正确发送。我正在查看HangFire documentation,但我不知道如何使用NSubstitute进行测试。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2021-10-28 16:43:28

使用以下代码:

代码语言:javascript
运行
复制
_backgroundJobClient.ReceivedWithAnyArgs()
                   .Enqueue<ISms>(x => x.Send(default));
票数 1
EN

Stack Overflow用户

发布于 2021-10-16 00:46:05

基于example in the docs,您应该能够使用以下内容对其进行测试:

代码语言:javascript
运行
复制
/* Moq example:
client.Verify(x => x.Create(
    It.Is<Job>(job => job.Method.Name == "CheckForSpam" && job.Arguments[0] == comment.Id.ToString()),
    It.IsAny<EnqueuedState>());
*/

// Ported to NSubstitute:
_backgroundJobClient.Received().Create(
    Arg.Is<Job>(job => job.Method.Name == "CheckForSpam" && job.Arguments[0] == comment.Id.ToString()),
    Arg.Any<EnqueuedState>()
);

这只是基于文档中的示例。您需要的确切arg匹配代码将取决于您所使用的特定类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69587243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档