.net 我应该在WebAPI核心中测试CQRS处理程序还是整个请求输出
我创建Web API已经有一段时间了,很高兴能够测试CQRS处理程序(使用Mediatr管理),而不涉及任何类型的基础结构代码(控制器、请求等)。这是完全有道理的,因为我的控制器非常瘦,因为它们正在做控制器应该做的事情:请求和响应之间的通信:.net 我应该在WebAPI核心中测试CQRS处理程序还是整个请求输出,.net,asp.net-web-api,asp.net-core,cqrs,mediatr,.net,Asp.net Web Api,Asp.net Core,Cqrs,Mediatr,我创建Web API已经有一段时间了,很高兴能够测试CQRS处理程序(使用Mediatr管理),而不涉及任何类型的基础结构代码(控制器、请求等)。这是完全有道理的,因为我的控制器非常瘦,因为它们正在做控制器应该做的事情:请求和响应之间的通信: [HttpGet("requests")] public async Task<IEnumerable<AbsenceRequest>> GetAbsenceRequests(GetAbsenceRequests.Q
[HttpGet("requests")]
public async Task<IEnumerable<AbsenceRequest>> GetAbsenceRequests(GetAbsenceRequests.Query query)
{
return await _mediator.Send(query);
}
[HttpGet(“请求”)]
公共异步任务GetAbscenceRequests(GetAbscenceRequests.Query)
{
返回wait\u mediator.Send(查询);
}
但仍然有一些案例我的处理者测试没有涵盖。这里有几个例子:
我觉得这个选择非常令人困惑,我想知道推荐的方法是什么。保留测试,因为“它们很可爱”,我不会真的用它作为论据 你为什么要考试
- 确保交付的软件正常工作(如NASA宇宙飞船软件)
- 减少事后修复bug的时间
- 缩短完成项目的时间
作为经验丰富的软件工程师/项目负责人,您需要决定什么对您的项目最有好处。我将使用单元测试测试您的处理程序,因为这些测试可以运行得更快,并且应该比通过MVC测试处理程序更不脆弱。没有充分的理由将处理程序的所有测试与当前的MVC实现结合起来。在决定是编写单元测试还是集成测试时,问题应该是“我可以用单元测试来测试吗?”如果答案是肯定的,那么就编写单元测试
现在,也就是说,使用
TestServer
在ASP.NET核心中进行集成测试是非常棒的(我写道)。有些事情是不能用单元测试(处理程序或控制器操作方法)来测试的,比如路由设置是否正确、MVC错误处理、过滤器或模型绑定。您应该编写测试来确认这种行为,使用集成测试和TestServer
(如果您认为它们增加了价值,也就是说)。您不应该测试所有已经有单元测试的场景——那将是一种浪费。但是,您可以使用这种方法来验证单元测试无法验证的不同内容。感谢您提供了非常好的反馈!我只想纠正一件事。处理程序测试不是单元测试,而是集成测试(它们在内存数据库中进行)。因此,在不同规模的集成测试之间进行选择。但是我同意,尽管TestServer是多么优秀,我们应该通过它来测试我们不能在较低级别上测试的东西。