c# - DotNet Core,如何使用自定义模型绑定对控制器操作方法进行单元测试
问题描述
使用 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 对象。
我想对此进行单元测试。我不能直接从单元测试中调用 Put,因为这会绕过模型绑定。
我已经对绑定器本身进行了测试,但我需要测试控制器正在使用它。
我没有测试 MVC 路由。
如果有人删除 ModelBinder 注释,我想要一个单元测试将失败。
一些属性是由活页夹设置的(如 ModelState.IsValid),我想确保错误的输入产生正确的输出。
这不必使用实际的模型绑定器。我可以模拟一个做我需要的东西。如果我这样做,我仍然需要至少一个测试来确保注释在代码中正确应用。
解决方案
这可以通过可以在部署之前运行的集成测试来实现。在 SO 上提出了类似的问题,并在此处得到了很好的回答(恕我直言) 。如果您想查看简要说明和示例,请查看它。
正如该答案中所建议的,我还建议您仔细阅读以下文档: https ://docs.microsoft.com/en-us/aspnet/core/testing/integration-testing
推荐阅读
- python - Variables in Python MySQL connector not working when in function
- django - Django multiple Project using same database tables
- php - how to make authentic user afte login cant going to admin page
- aws-cdk - CDK Stepfunction Fargate step that takes all json key
- php - 我在使用 PHP sha256 Hash 时遇到了一些问题
- php - 如何使用打开/关闭原则替换修改共享状态的开关块
- vim - Unable to get out of terminal window inside VIM using VIM key bindings
- jquery - Radio input section toggle with jQuery
- sql - SUM FIRST_VALUE 或 SUM group by 同时仍显示所有行?
- python - Windows 10 python.exe neither runs nor gives error in command line