我正在尝试对我的课程进行单元测试,其中包括后台工作。到目前为止,我正在测试的方法将作业排队,如下所示:
public void SendSms(SmsContent content){
....
_backgroundJobClient.Enqueue<ISms>(x => x.Send(content));
....
}
我的第一个单元测试检查是否调用了BackgroundJobClient并且看起来像这样:
Assert.Equal(1,_backgroundJobClient.ReceivedCalls().Count());
一切正常,但现在我想检查所有参数是否正确发送。我正在查看 HangFire 文档,但我不知道如何使用 NSubstitute 进行测试。
谢谢!
使用此代码:
_backgroundJobClient.ReceivedWithAnyArgs()
.Enqueue<ISms>(x => x.Send(default));
基于文档中的示例,您应该能够使用类似这样的东西来测试它:
/* 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>()
);
这仅基于记录的示例。您需要的确切参数匹配代码将取决于您使用的具体类型。