我创建了一个 BrokeredMessage 实例,并希望围绕它的传递计数与队列的最大传递计数来测试我的代码。我不想建立一个真正的队列来发送和接收消息,但在消息传递之前,deliverycount 属性不会初始化。我怎样才能伪造这个?
我设法模拟了这一点,并让它为完整和放弃消息创建一个包装器。在没有包装器的情况下进行单元测试时,我被 message.Complete() 绊倒了。
创建一个类和接口来处理消息操作。
public class MainServiceBusClientWrapper : IServiceBusClientWrapper
{
public void Complete(BrokeredMessage message) => message.Complete();
public void Abandon(BrokeredMessage message) => message.Abandon();
}
在处理传入服务总线消息的类中执行此操作:
private IServiceBusClientWrapper _serviceBusWrapper;
_serviceBusWrapper.Complete(message);
代替:
message.Complete();
在单元测试中,您可以执行类似以下操作,以免 BrokeredMessage 操作失败:
_serviceBusWrapper.Setup(p => p.Complete(It.IsAny<BrokeredMessage>()));
我希望这有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)