var*_*eep 21 .net c# mocking azureservicebus azure-functions
我们想为服务总线消息触发器编写单元测试。我们正在使用Azure.Messaging.ServiceBus nuget 包
[FunctionName("serviebustrigger")]
public async Task Run ([ServiceBusTrigger("xxxxtopic", "xxxxsubscription", Connection = "Abs-Connection", AutoCompleteMessages = false)] ServiceBusReceivedMessage message, ServiceBusMessageActions messageActions)
{
_logger.LogInformation($"{nameof(Run)} execution started for MessageId:{{MessageId}}", message.MessageId);
try
{
//some code
await messageActions.CompleteMessageAsync(message);
}
catch (Exception ex)
{
await messageActions.DeadLetterMessageAsync(message);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想为上面的代码编写单元测试。但我无法模拟ServiceBusReceivedMessage 和 ServiceBusMessageActions ,因为它们具有内部构造函数。有人可以建议我更好的方法来编写单元测试
Jes*_*ire 36
ServiceBusMessageActions
最初错过了模拟构造函数的实现存在疏忽。这个问题在扩展包v5.2.0中得到了纠正。
通过该修复,可以使用无参数构造函数来确保其ServiceBusMessageActions
可与 Moq 或 FakeItEasy 等模拟框架一起使用。每个公共成员都是virtual
或可设置的,并且该类不是密封的。您应该能够使用与其他类型相同的方法进行模拟 - 无论是使用模拟框架还是从类继承并创建您自己的模拟类型 - 并利用模型工厂来模拟行为。
对于ServiceBusReceivedMessage
服务操作返回的模型类型和其他模型类型,ServiceBusModelFactory用于创建用于测试目的的实例。
归档时间: |
|
查看次数: |
9392 次 |
最近记录: |