如何解决CQR的单元测试模拟介体
我在MVC,CQRS应用程序中有问题。我正在尝试为应用程序层编写单元测试,其中处理程序需要将IMediator注入构造函数,我试图使用MOQ进行模拟,但显然缺少一些设置:
然后,在WorkOrder查询处理程序中使用中介程序将查询发送到另一个对象(联系人)。
但是我似乎无法正常工作,第二个调解器调用没有到达queryhandler。
请那里有人遇到相同的问题,或者知道如何设置它才能正常工作。
解决方法
考虑到设置初始模拟的方式,我知道您正在将模拟的Mediator
传递给处理程序。通过处理程序对Send
的调用失败,因为您正在通过模拟对象进行调用。理想情况下,您可以模拟Send
方法所期望的行为,并设置由于Send
调用而想要返回的结果。
请记住,您使用Mocks是因为您不希望在测试环境中触发实际行为。
可以如下所示模拟行为
// within your test method
mediator.SetUp(m => m.Send(It.IsAny<GetContactDomainQuery>()))
.Returns(<whatever you want your mocked behaviour to return>);
看看documentation of Moq,以进一步了解模拟的各种变体。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。