我正在尝试使用restsharp来实现我的rest api的测试,这似乎是一个非常强大且易于使用的简单测试工具。
话虽如此,我仍然无法从 IRestResponse 获取内容。
代码如下:
...
[TestMethod]
public void Testing_Whether_Get_Returns_cellphone()
{
// Arrange
RestClient restClient = new RestClient("http://pseudoUrl/Users?UserId={uid}");
//restClient.AddDefaultHeader("headerType1", Guid.NewGuid().ToString());
//restClient.AddDefaultUrlSegment("uid", "25248896");
RestRequest restRequest = new RestRequest(Method.GET);
restRequest.AddQueryParameter("uid", "25248896");
restRequest.AddHeader("headerType1", Guid.NewGuid().ToString());
// Act
IRestResponse restResponse = restClient.Execute(restRequest); // restresponse = "StatusCode: Ok.."
string response = restResponse.Content; // response = "[]"
// Assert
Assert.IsTrue(response.Contains("cellphone"));
}
...
在测试上述内容时,状态代码为 200,但内容为“[]”,尽管当我使用 swagger 测试它时,我得到了一个很好的 json 响应,其中填充了所需的内容。
如您所见,我尝试使用 AddDefaultUrlSegment 和 AddQueryParameter。我猜最后一个是最明显的?
swagger 中的以下网址是:“http://pseudoUrl/Users?UserId=25248896”添加了 header :headerType1 并再次 - 工作得很好。
有人能看出我做错了什么吗?
最佳答案
AddQueryParameter
使用您当前的输入会将 ?uid=25248896
添加到 URL。
只需将不带查询的 URL http://pseudoUrl/Users
放入 RestClient
构造函数中,然后在 AddQueryParameter 中将“uid”更改为“UserId”
[TestMethod]
public void Testing_Whether_Get_Returns_cellphone()
{
// Arrange
RestClient restClient = new RestClient("http://pseudoUrl/Users");
RestRequest restRequest = new RestRequest(Method.GET);
restRequest.AddQueryParameter("UserId", "25248896");
restRequest.AddHeader("headerType1", Guid.NewGuid().ToString());
// Act
IRestResponse restResponse = restClient.Execute(restRequest);
string response = restResponse.Content; // response = "[]"
// Assert
Assert.IsTrue(response.Contains("cellphone"));
}
关于c# - Restsharp:IRestResponse内容返回 "[]",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56036889/