Когда я пытаюсь сопоставить двойное значение из массива json, оно терпит неудачу с ожидаемым значением, имеющим угловые скобки вокруг него. Что это значит?

Используя RestAssured, я пытаюсь проверить следующий фрагмент JSON:

    {
        "id": "abc1",
        "commonName": "Plane",
        "location": [
            1.1,
            1.1
        ]
    }

со следующим фрагментом кода Java:

    double[] location = new double[]{1.1,1.1};
    given()
    .when()
        .get("tree/abc1/")
    .then()
        .assertThat()
        .statusCode(HttpStatus.OK.value())
        .body("location[0]", is((location[0])));

Последнее утверждение завершается со следующей ошибкой

    java.lang.AssertionError: 1 expectation failed.
    JSON path location[0] doesn't match.
    Expected: is <1.1>
      Actual: 1.1

На что указывают угловые скобки вокруг ожидаемого значения и как я могу добиться успеха утверждения?


person user1098798    schedule 05.09.2019    source источник


Ответы (2)


Типом по умолчанию для чисел JSON является число с плавающей запятой при использовании уверенности в себе. Я предполагаю, что угловые скобки указывают на несоответствие типов.

Решение состоит в том, чтобы установить оставшуюся конфигурацию в данном блоке, чтобы указать тип номера.

double[] location = new double[]{1.1,1.1};
given()
    .config(RestAssured.config().jsonConfig(jsonConfig().numberReturnType(JsonPathConfig.NumberReturnType.DOUBLE)))
.when()
    .get("tree/abc1/")
.then()
    .assertThat()
    .statusCode(HttpStatus.OK.value())
    .body("location[0]", is(location[0]));
person user1098798    schedule 05.09.2019

Возврат чисел с плавающей запятой и двойников как BigDecimal

вместо того, чтобы иметь два разных типа конфигурации, преобразуйте все поплавки и двойные числа в BigDecimal, а затем сравните их в Matcher hamcrest Matcher.

введите здесь описание изображения

person Arpan Saini    schedule 03.10.2019