【发布时间】:2020-03-02 16:11:52
【问题描述】:
我正在测试的单元是一个 IHostedService,它使用 Microsoft.Azure.ServiceBus 中的 IQueueClient 进行通信。据我所知,没有像 .Receive() 这样的函数,这就是我这样做的原因:
_inputQueueClient.Setup(x => x.RegisterMessageHandler(
It.IsAny<Func<Message, CancellationToken, Task>>(),
It.IsAny<MessageHandlerOptions>()))
.Callback<Func<Message, CancellationToken, Task>, MessageHandlerOptions>((x, y) => _messageReceivedHandler = x);
这样我就可以得到消息处理方法并在我的单元测试中直接调用它。这是模拟收到消息的适当方式还是有更好的方式?
【问题讨论】:
-
我认为这对于简单的测试来说很好 - 但如果您所做的只是测试单个消息处理程序,那么直接针对您的消息处理程序回调编写单元测试可能会更简单?如果您还必须测试服务总线插件或异常处理程序,则必须做一些更高级的事情。