Restsharp:IRestResponse内容返回“ []”

时间:2019-05-08 08:49:18

标签: c# rest unit-testing client restsharp

我正在尝试使用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 -效果很好。

有人可以看到我在做什么错吗?

1 个答案:

答案 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"));
}