我目前正在ASP.NET Core項目中實現單元測試,並且必須測試API控制器的POST方法。這裏是POST方法的一個例子:使用ASP.NET Core在單元測試中模擬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; }
}
的主要思想是,以測試兩個創建(201)也無效請求(400)結果。我經歷了this page,Created(201)的工作非常好。但是,當我將錯誤請求(401)應用於相同的邏輯時,它不起作用,因爲我沒有提出真正的請求。但是,當我嘗試使用PostMan的「錯誤」值時,我得到了400,正如預期的那樣。
如何模擬單元測試的POST請求?或者我錯過了什麼?
對於ASP.NET Core,您可能需要查看此文檔,其中包含有關使用POST示例的單元測試控制器的一部分https://docs.microsoft.com/zh-cn/aspnet/core/ mvc/controllers/testing – Svek
感謝您的信息,@Svek!我完全忘了「controller.ModelState.AddModelError」。這一定會有所幫助! –
很高興有幫助。 – Svek