【问题标题】:Rest Assured Empty response body structure放心空响应体结构
【发布时间】:2014-04-02 10:42:56
【问题描述】:

我想测试一个 find rest 服务,如果我找到了我想从数据库中删除的东西,否则什么都不做

我这样使用它(其中 rs 是 find 的响应)

 JsonPath jsonPath = rs.getBody().jsonPath();
 Object foundName= jsonPath.get("name");

  if (foundName!= null) {

   expect().statusCode(200).when().delete("..." + foundName);

 }

所以当什么都没找到时如何检查 foundName ,因为我尝试了 foundName!=null 或 foundName != "",但它仍然无法正常工作。 所以请解释一下空响应体的结构是什么

【问题讨论】:

  • 在java中你不能用!=比较字符串。使用String.equals("") 方法
  • 是的,我也试过了,发现Name.equals("") 是假的
  • 尝试使用调试器查找foundName的值
  • 我尝试调试,发现名称的值为 ArrayList 子元素: elementData = Object[0] (显示值为 []) , modCount = 0 , size = 0
  • 所以显然它不是您期望的字符串。现在您离发现错误更近了一步,您认为可以从这里开始工作吗?

标签: java json rest rest-assured


【解决方案1】:

基于调试信息 foundName 是 List 类型,因此解决方案是将 foundName 转换为 List 并检查它是否为空。

 List foundName = (List)jsonPath.get("name");
 foundName.isEmpty()

【讨论】:

    【解决方案2】:
    rs.body(blankOrNullString());
    

    帮我验证响应正文为空或空白。

    【讨论】:

      【解决方案3】:

      您可以调用jsonPath.getString("name"),它将您的(空)响应正文转换为字符串,您可以使用equals("") 进行检查(请参阅RESTassured JavaDoc)。我假设“名称”是字符串类型。

      【讨论】:

      • 我也试过这样,但 jsonPath.getString() 基本上在内部使用相同的 jsonPath.get(),所以这与我用 get() 尝试的方法相同
      • 我明白了。那么返回的字符串包含什么?
      猜你喜欢
      • 2021-05-30
      • 2016-12-10
      • 1970-01-01
      • 1970-01-01
      • 2022-12-29
      • 2018-05-23
      • 1970-01-01
      • 2018-11-04
      • 1970-01-01
      相关资源
      最近更新 更多