繁体   English   中英

DotNet Core,如何使用自定义 model 绑定对 Controller 操作方法进行单元测试

[英]DotNet Core, How do I unit test a Controller Action method with a custom model binding

使用 ASP.Net Core 2.2,我在 PUT 中使用了一个 ModelBinder,如下所示:

[HttpPut("{taskIdentifier}/{number}")]
public async Task<IActionResult> Put(string taskIdentifier, string number, 
            [ModelBinder(typeof(TaskUpdateV1Binder<TaskUpdate>))]TaskUpdate value)

在运行时,TaskUpdateV1Binder 被调用,它读取请求体并创建一个 TaskUpdate object。

我想对此进行单元测试。 我不能直接从单元测试中调用 Put,因为这绕过了 model 绑定。

我已经对绑定器本身进行了测试,但我需要测试它被 controller 使用。
我没有测试 MVC 路由。

  • 如果有人删除 ModelBinder 注释,我想要一个单元测试将失败。

  • 一些属性是由活页夹设置的(如 ModelState.IsValid),我想确保错误的输入产生正确的 output。

  • 这不必使用实际的 model 活页夹。 我可以模拟一个做我需要的东西。 如果我这样做,我仍然需要至少一个测试来确保注释在代码中正确应用。

这可以通过可以在部署之前运行的集成测试来实现。 在 SO 上提出了类似的问题,并在此处得到了很好的回答(恕我直言)。 如果您想查看简要说明和示例,请查看它。

正如该答案中所建议的,我还建议您仔细阅读以下文档: https://docs.microsoft.com/en-us/aspnet/core/testing/integration-testing

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM