繁体   English   中英

使用 NSubstitute 单元测试 Hangfire

[英]Unit test Hangfire with NSubstitute

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

public void SendSms(SmsContent content){
      .... 
      _backgroundJobClient.Enqueue<ISms>(x => x.Send(content));
      ....
}

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

 Assert.Equal(1,_backgroundJobClient.ReceivedCalls().Count());
  

一切正常,但现在我想检查所有参数是否正确发送。 我正在查看HangFire 文档,但我无法弄清楚如何使用 NSubstitute 进行测试。

谢谢!

根据文档中示例,您应该能够使用以下内容对其进行测试:

/* 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 匹配代码将取决于您使用的特定类型。

使用此代码:

_backgroundJobClient.ReceivedWithAnyArgs()
                   .Enqueue<ISms>(x => x.Send(default));

暂无
暂无

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

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