c# - Restsharp:IRestResponse内容返回 "[]"

标签 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,但内容为“[]”,尽管当我使用 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/

相关文章:

rest - Grails REST 安全性 - 密码过期

ruby-on-rails - 为其他新操作添加路由的目的是什么?

c# - 如何让 Visual Studio 在 MSTest 运行结束时删除 Deploy 目录

java - 公开成员以对其进行单元测试

c# - 如何将 Newton.Json 反序列化通用对象转换为自定义对象?

c# - 从 c# (SharePoint 2010) 使用 wkhtmltopdf

c# - 一个或多个实体的验证失败。有关详细信息,请参阅 'EntityValidationErrors' 属性

c# - 如何在单击按钮期间更改 TextBlock 文本?

c# - 哪些API路由设计符合最佳实践?

c# - 如何模拟 HttpRequestMessage 上的 CreateResponse<T> 扩展方法