我们正在从Microsoft.Azure.EventHubs.Processor v4.1.0迁移到Azure.Messaging.EventHubs.Processor v5.6.0库。我正在使用await messageHandler.HandleEventAsync(args);其中args是processevenargs类型。我想要进行单元测试的大多数业务逻辑都是基于EventData的,这是processevenargs的属性。事件数据具有systemProperties和其他属性的只读字典。EventData的公共构造函数不允许我们指定systemProperties或EventData主体以外的任何其他属性。
processevenargs和EventBody都没有可模拟的接口。在这种情况下,你能告诉我们如何使用processevenargs对代码进行单元测试吗?。.Net版本:.Net core app 3.1NuGet包版本:Azure.Messaging.EventHubs.Processor v5.6.0, Microsoft.NET.Test.Sdk v16.6.1
测试处理程序的推荐方法是直接调用它们,正如您正在尝试的那样。每个事件参数类型的构造函数都是公共的。(例如:ProcessEventArgs)。
对于PartitionContext
,EventData
上的代理拥有的属性,以及其他没有公共构造函数的模型类型,EventHubsModelFactory允许您创建它们以用于模拟/测试场景。