我正在为我们的应用程序编写一个事件发布者,该发布者内部使用Azure C# EventHubClient。
我想对我的事件正确地转换为EventData对象(Properties + Body)以及其他一些功能进行单元测试。长话短说,我需要一些方法来为EventHubClient创建一个模拟。不幸的是,似乎没有一种简单的方法可以做到这一点:
从理论上讲,我可以围绕要使用的方法创建包装器接口(interface)和类,但这意味着要维护更多代码。有人知道使用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>();