[英]how to unittest an asp.net web api?
我從未對asp.net Web API進行過單元測試。 該服務是關於在請求中發布JSON,並在JSON模式驗證和查詢后返回JSON結果。 只是想知道如何總體上測試Web API。 一個測試示例是發布無效的JSON字符串,並測試該字符串是否返回正確的HTTPcode(即400或類似值)。 我的服務大致如下所示:
public class MyApiController : ApiController
{
public HttpResponseMessage Post([FromBody]dynamic value)
{
return response;
}
}
另外我該如何在Web API中使用構造函數注入? 如果我在這里使用構造函數,則發布的值為null?
您可以直接創建控制器的實例。 如果使用了任何復雜的代碼,則可以為該類創建模擬以進行單元測試。 請參考此鏈接以了解ASP.NET Web API的單元測試。
[Test]
public async void GetSettingsRequest()
{
var getSettingsResponse = await api.GetSettings();
Assert.IsNotNull (getSettingsResponse);
Assert.IsTrue (getSettingsResponse.Success);
Assert.IsNotNullOrEmpty (getSettingsResponse.Email);
}
我做了測試項目,該項目正在api服務器上發出請求。 發出請求后,等待響應並測試響應。
我首先想到的是,您應該先弄清楚要測試的內容。 這意味着只需記下所有預期的行為,然后編寫測試以確保控制器的行為符合預期。
讓我們從兩個虛構的測試案例開始:
-
class MyApiControllerTest
{
private MyApiController myApiControllerFixture;
[TestInitialize]
void Initialize()
{
this.myApiControllerFixture = new MyApiController();
}
[TestMethod]
void MyApiController_Post_ResponseNotNullTest()
{
var response = this.myApiControllerFixture.Post(new { });
Assert.IsNotNull(response);
}
[TestMethod]
void MyApiController_Post_SuccessStatusCodeTest()
{
var response = this.myApiControllerFixture.Post(new { });
Assert.IsTrue(response.IsSuccessStatusCode);
}
}
只需在發現新的必需行為時添加測試,並在行為更改時刪除過時的測試即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.