如何在测试中创建一个真正的 MediatR 实例?
How to create a real MediatR instance in test?
我想写一个集成测试,但我不知道如何制作一个Mediator实例。我看到了使用 AutoFac 的例子,但我对自己如何做感到疑惑。
也许这不是要走的路,但无论如何这是我想要的。请随时提供反馈。
所以我的控制器中有一个这样的构造函数:
FooController(IMediator mediator){
}
我的测试是这样的:
FooControllerTest(){
var mediator = ____ //this I don't get
var controller = new FooController(mediator);
//do testing stuff here
}
我试过这样创建调解器:
var mediator = new Mediator(new ServiceFactory());
但是 ServiceFactory 需要一个 System.Type 对象。
我试图像这样制作这种类型的测试实例:
class TypeTestInstance : Type {}
然后是测试:
FooControllerTest(){
var mediator = new Mediator(new ServiceFactory(new TypeTestInstance()));
}
但在此示例中,它给出了预期的错误方法名称,Whosebug 说我需要这样做:new ServiceFactory(() => new TypeTestInstance());
但这不起作用。它说 Delegate ServiceFactory 不接受 0 个参数。但是在这个例子中我什至不确定它是否有效。
所以我想听听你是如何解决这个问题的..
我不确定您是否使用 API 和 .NET Core,但这个答案可能有帮助
.
使用 testserver 命中 HTTP 端点还会测试任何正在调用的 mediatr 处理程序,您可以断言任何使您的测试合理的东西(数据库是否存储了一个值,响应状态是否为 x,响应是否包含 x 等)
我想写一个集成测试,但我不知道如何制作一个Mediator实例。我看到了使用 AutoFac 的例子,但我对自己如何做感到疑惑。
也许这不是要走的路,但无论如何这是我想要的。请随时提供反馈。
所以我的控制器中有一个这样的构造函数:
FooController(IMediator mediator){
}
我的测试是这样的:
FooControllerTest(){
var mediator = ____ //this I don't get
var controller = new FooController(mediator);
//do testing stuff here
}
我试过这样创建调解器:
var mediator = new Mediator(new ServiceFactory());
但是 ServiceFactory 需要一个 System.Type 对象。 我试图像这样制作这种类型的测试实例:
class TypeTestInstance : Type {}
然后是测试:
FooControllerTest(){
var mediator = new Mediator(new ServiceFactory(new TypeTestInstance()));
}
但在此示例中,它给出了预期的错误方法名称,Whosebug 说我需要这样做:new ServiceFactory(() => new TypeTestInstance());
但这不起作用。它说 Delegate ServiceFactory 不接受 0 个参数。但是在这个例子中我什至不确定它是否有效。
所以我想听听你是如何解决这个问题的..
我不确定您是否使用 API 和 .NET Core,但这个答案可能有帮助
使用 testserver 命中 HTTP 端点还会测试任何正在调用的 mediatr 处理程序,您可以断言任何使您的测试合理的东西(数据库是否存储了一个值,响应状态是否为 x,响应是否包含 x 等)