【发布时间】:2017-05-16 19:38:49
【问题描述】:
我目前正在 ASP.NET Core 项目中实现单元测试,我必须测试 API 控制器的 POST 方法。以下是 POST 方法的示例:
[HttpPost]
public IActionResult Post([FromBody]Product product)
{
if (!ModelState.IsValid)
{
return BadRequest();
}
try
{
var returnValue = productService.Save(product);
return CreatedAtRoute(nameof(Post), new { returnValue = returnValue }, product);
}
catch
{
return BadRequest();
}
}
这是我正在使用的模型的示例:
public class Product
{
[Required]
[MaxLength(25)]
public string Name { get; set; }
[MaxLength(200)]
public string Description { get; set; }
}
主要思想是测试 Created (201) 和 Bad Request (400) 结果。我通过this page 和 Created (201) 工作得很好。但是,当我对错误请求 (401) 应用相同的逻辑时,它不起作用,因为我没有提出真正的请求。但是当我尝试使用带有“错误”值的 PostMan 时,我得到了 400,正如预期的那样。
如何模拟来自单元测试的 POST 请求?还是我错过了什么?
【问题讨论】:
-
对于 ASP.NET Core,您可能需要查看此文档,其中有一节关于单元测试控制器以及使用 POST docs.microsoft.com/en-us/aspnet/core/mvc/controllers/testing 的示例
标签: c# unit-testing asp.net-core