CQR的单元测试模拟介体

问题描述

我在MVC,CQRS应用程序中有问题。我正在尝试为应用程序层编写单元测试,其中处理程序需要将IMediator注入构造函数,我试图使用MOQ进行模拟,但显然缺少一些设置:

enter image description here

然后,在WorkOrder查询处理程序中使用中介程序将查询发送到另一个对象(联系人)。

enter image description here

但是我似乎无法正常工作,第二个调解器调用没有到达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,以进一步了解模拟的各种变体。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...