Получение assertionError с использованием restassured в значении поля ответа Json, а ожидаемое и фактическое идентичны

Вот мой код после получения ответа.

response.then().assertThat().body("documents[0].items[0].price.sales_tax_summary[0].rate",equalTo("0.0"));

вот журнал ответов:

{
    "id": "quote-1",
    "documents": [
        {
            "id": "document-1",
            "items": [
                {
                    "id": "2",
                    "price": {
                        "amount_inclusive": 200000.5,
                        "amount_exclusive": 200000.5,
                        "total_tax": 0.0,
                        "tax_rate": 0.0,
                        "sales_tax_summary": [
                            {
                                "rate": 0.0,
                                "amount": 0.0
                            },
                            {
                                "rate": 0.0,
                                "amount": 0.0
                            }
                        ]
                    }
                }
            ],
            "shipping": {
                "id": "3",
                "price": {
                    "amount_inclusive": 15.0,
                    "amount_exclusive": 15.0,
                    "total_tax": 0.0,
                    "tax_rate": 0.0,
                    "sales_tax_summary": [
                        {
                            "rate": 0.0,
                            "amount": 0.0
                        },
                        {
                            "rate": 0.0,
                            "amount": 0.0
                        }
                    ]
                }
            },
            "handling": {
                "id": "4",
                "price": {
                    "amount_inclusive": 5.0,
                    "amount_exclusive": 5.0,
                    "total_tax": 0.0,
                    "tax_rate": 0.0,
                    "sales_tax_summary": [
                        {
                            "rate": 0.0,
                            "amount": 0.0
                        },
                        {
                            "rate": 0.0,
                            "amount": 0.0
                        }
                    ]
                }
            }
        }
    ]
}

вот сообщение об ошибке

java.lang.AssertionError: 1 expectation failed.
JSON path documents[0].items[0].price.sales_tax_summary[0].rate doesn't match.
Expected: 0.0
  Actual: 0.0

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


person Omar Sabha    schedule 21.01.2019    source источник


Ответы (2)


Проблема заключается в сравнении String с двойным.

Попробуйте вместо этого:

double expectedRate = 0.0;

double actualRate = response.then().extract().jsonPath().getDouble("documents[0].items[0].price.sales_tax_summary[0].rate");

assertTrue(expectedRate == actualRate);

Это гарантирует, что он сравнивается как double вместо строки с double, и должен дать вам результат, который вы ищете.

person Dave Gorecki    schedule 22.01.2019

Ваш JSON возвращает двойное значение, и вы сравниваете его со строкой, что является причиной сбоя вашего утверждения. Используйте equalTo () при сравнении двух строк. Используйте следующий код:

response.then().assertThat().body("documents[0].items[0].price.sales_tax_summary[0].rate"== 0.0)

person Deepak Attri    schedule 30.01.2019