首页 > 解决方案 > 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 路由。

标签: c#unit-testingasp.net-corexunitxunit.net

解决方案


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

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


推荐阅读