【问题标题】:How to create a real MediatR instance in test?如何在测试中创建一个真正的 MediatR 实例?
【发布时间】:2021-03-04 05:55:50
【问题描述】:

我想编写一个集成测试,但我不知道如何制作一个 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()));
}

但在这个例子中,它给出了一个错误的方法名称,Stackoverflow 说我需要这样做:new ServiceFactory(() => new TypeTestInstance()); 但这不起作用。它说 Delegate ServiceFactory 不接受 0 个参数。但是在这个例子中,我什至不确定它是否有效。

所以我想听听你是如何解决这个问题的..

【问题讨论】:

标签: c# integration-testing mediatr


【解决方案1】:

我不确定您是否正在使用使用 .NET Core 的 API,但这个答案可能会有所帮助 Unit testing validation through MediatR PipelineBehavior.

使用 testserver 访问 HTTP 端点还可以测试任何被调用的 mediatr 处理程序,您可以断言使您的测试合理的任何事情(db 是否存储了一个值、响应状态为 x、响应是否包含 x 等)

【讨论】:

    猜你喜欢
    • 2010-12-02
    • 2017-07-29
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2016-04-17
    • 2019-07-18
    相关资源
    最近更新 更多