【发布时间】:2019-03-21 09:21:47
【问题描述】:
正如this anwer 到Asp.Net Core 2.1 ApiController does not automatically validate model under unit test 中所指出的,ASP.NET Core 2.1 的 ApiControllerAttribute 为我们提供的自动 ModelState 验证仅在运行时实际请求操作时才有效,而不是通过在单元测试。
但是,当提供不正确的模型时,我仍然想测试我的操作是否真的返回 BadRequestResult。有没有办法做到这一点?我知道我仍然可以手动检查 ModelState.IsValid 是否为假,并自己返回 BadRequest(),但这会破坏自动验证的意义。
毕竟我是手动检查 ModelState.IsValid,还是有办法在单元测试中使用新的 ApiControllerAttribute 模型验证?
【问题讨论】:
-
我最终制作了一个 AspNetCore 中间件,用于测试模型是否无效,如果是,则在其中返回一个 badrequest。不幸的是,这样做也意味着您只能通过集成测试来测试验证器是否正在工作。
-
我想我可以让单元测试检查控制器是否用 ApiController 装饰...感觉不对,但最终总比没有测试要好。
标签: unit-testing asp.net-core asp.net-core-webapi asp.net-core-2.1