亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為 Web API 單元測試指定 HttpRequestMessage 的內容

為 Web API 單元測試指定 HttpRequestMessage 的內容

C#
守候你守候我 2022-01-16 14:32:45
我有一個要進行單元測試的 Web API 控制器方法。它接受了,HttpRequestMessage但我不知道如何設置我想要傳遞的內容。是否可以創建/模擬,HttpRequestMessage以便我可以給它一個string我想要的結果await request.Content.ReadAsStringAsync()?這是我的控制器方法:[HttpPost]public async Task<HttpResponseMessage> Post(HttpRequestMessage request){    var data = await request.Content.ReadAsStringAsync();    //do something with data}我可以使用其無參數構造函數輕松創建HttpRequestMessage,但我不知道如何將內容設置為有意義的值。我希望我的測試按照以下方式進行:[TestMethod]public async Task PostMethodWorks(){    var controller = new MyController();    var data = "this will be JSON";    var httpRequestMessage = new HttpRequestMessage();    //set the content somehow so that httpRequestMessage.Content.ReadAsStringAsync returns data    var response = await controller.Post(httpRequestMessage);    //assert something about the response here}是否可以將內容的值設置為某個 JSON,或者我需要更改方法以便它采用不同的參數?(對于更多的上下文,我想讓方法接受 aHttpRequestMessage的原因是因為我正在處理一個遺留代碼庫,其中包含大量的控制器方法,這些方法接受 a HttpRequestMessage。)
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

是否可以將內容的值設置為一些 JSON


是的


您可以使用許多HttpContent派生類中的任何一種。由于在這種情況下您要發送 JSON 內容,因此您需要使用StringContent class


例如


[TestMethod]

public async Task PostMethodWorks() {

    //Arrange

    var controller = new MyController();


    var data = "this will be JSON";

    var httpRequestMessage = new HttpRequestMessage();


    //set the content somehow so that httpRequestMessage.Content.ReadAsStringAsync returns data 

    httpRequestMessage.Content = new StringContent(data, Encoding.UTF8, "application/json");



    //Act

    var response = await controller.Post(httpRequestMessage);


    //Assert

    //assert something about the response here

}

然而,這感覺就像一個XY 問題,因為理想情況下 Web API 操作不會HttpRequestMessage作為參數。


還是我需要更改方法以便它采用不同的參數?


存在模型綁定器,可用于具有強類型操作參數,這些參數將解析傳入數據并填充模型,然后再傳遞給操作。


查看完整回答
反對 回復 2022-01-16
  • 1 回答
  • 0 關注
  • 217 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號