繁体   English   中英

Azure C#EventHubClient模拟单元测试

[英]Azure C# EventHubClient mock for unit test

我正在为我们的应用程序编写一个事件发布者,它在内部使用Azure C#EventHubClient

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

  • EventHubClient没有实现任何相关的接口,所以使用像Moq或NSubstitute这样的东西创建一个模拟将无法正常工作。
  • EventHubClient是一个带有内部构造函数的抽象类,因此我无法扩展它并创建自定义模拟。

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

我刚刚在EventHubClient周围写了一个简单的包装器,然后嘲笑它。

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>();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM