首页 > 解决方案 > 如何模拟 IMessageReceiver?

问题描述

目前我有需要对服务总线触发功能进行单元测试的场景。Fa代码如下

public async Task Run([ServiceBusTrigger("sample", Connection = "sample", IsSessionsEnabled = false)] Message message, IMessageReceiver messageReceiver, ILogger _log)
        {
           
//Some code
        }  

我主要使用MessageReceiver的是 ,但很难进行单元测试,因为它对 Mock 不太灵活,所以我切换到IMessageReceiver. 低于错误

Microsoft.Azure.WebJobs.Host: Can't bind parameter 'messageReceiver' to type 'Microsoft.Azure.ServiceBus.Core.IMessageReceiver'.

注意:-在使用 MessageReceiver 时,变量名称应该是messageReceiver有一个奇怪的问题。

IMessageReceiver还有什么我需要遵循的吗?

标签: c#asp.net-coreservicebusazure-servicebus-queues

解决方案


截至今天,IMessageReceiver不支持通过依赖注入。你只能得到MessageReceiver. 您可以在此处支持添加支持的请求。

同时,您可以使用一种解决方法,此处显示。解决方法是有一个额外的内部方法,接受IMessageReceiver和注入函数调用MessageReceiver以将参数传递给内部方法。


推荐阅读