我正在尝试使用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,但内容为“ []”,即使我用摇摇晃晃的方式进行测试时,也会得到一个很好的json响应,其中充满了所需的内容。
如您所见,我已经尝试同时使用AddDefaultUrlSegment和AddQueryParameter。我猜最后一个是最明显的吗?
大胆的以下网址是:“ http://pseudoUrl/Users?UserId=25248896”添加了标头:headerType1 -效果很好。
有人可以看到我在做什么错吗?
答案 0 :(得分:1)
AddQueryParameter
与您当前的输入将?uid=25248896
添加到URL。
只需将没有查询http://pseudoUrl/Users
的URL放入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"));
}