gpt4 book ai didi

c# - 用于单元测试的 Azure C# EventHubClient 模拟

转载 作者:太空狗 更新时间:2023-10-29 23:49:31 26 4
gpt4 key购买 nike

我正在为内部使用 Azure C# EventHubClient 的应用程序编写事件发布器.

我想对我的事件是否正确转换为 EventData 对象(属性 + 正文)以及其他一些功能进行单元测试。长话短说,我需要一些方法来为 EventHubClient 创建模拟。不幸的是,似乎没有一种简单的方法可以做到这一点:

  • EventHubClient 没有实现任何相关接口(interface),因此使用 Moq 或 NSubstitute 之类的东西来创建模拟是行不通的。
  • EventHubClient 是一个具有内部构造函数的抽象类,因此我无法扩展它并创建自定义模拟。

理论上,我可以围绕我想使用的方法创建一个包装器接口(interface)和类,但这意味着需要维护更多代码。有人知道使用 EventHubClient 进行单元测试的更好方法吗?

最佳答案

我刚刚围绕 EventHubClient 编写了一个简单的包装器取而代之的是 mock 它。

public class EventHubService : IEventHubService
{
private EventHubClient Client { get; set; }

public void Connect(string connectionString, string entityPath)
{
var connectionStringBuilder = new EventHubsConnectionStringBuilder(connectionString)
{
EntityPath = entityPath
};

Client = EventHubClient.CreateFromConnectionString(connectionStringBuilder.ToString());
}

public async void Disconnect()
{
await Client.CloseAsync();
}

public Task SendAsync(EventData eventData)
{
return Client.SendAsync(eventData);
}
}

然后测试很容易:var eventHubService = new Mock<IEventHubService>();

关于c# - 用于单元测试的 Azure C# EventHubClient 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45052100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com