Так что я в основном пытаюсь написать RSpec, чтобы проверить мои результаты JSon:RSpec для тестирования JSON результаты
patient_allergies = patient.patient_allergies
expect(response_body['allergies'].size).to eq(patient_allergies.size)
patient_allergies.each_with_index do |allergy, index|
expect(response_body['allergies'][index]['name']).to eq(allergy.name)
allergy.patient_allergy_reactions.each_with_index do |reaction, index|
expect(response_body['reactions'][index]['name']).to eq(reaction.name)
end
end
Мои таблицы выше являются patient_allergies и patient_allergy_reactions.
Вышеуказанные тесты работают нормально. Но проблема в том, что я сравниваю по индексу.
Если порядок json изменяется, тест завершится с ошибкой. Есть ли лучший способ написать тесты для этого? мой JSON выглядит следующим образом:
"allergies": [
{
"name": "Allergy1",
"reactions": [
]
},
{
"name": "Allergy2",
"reactions": [
{
"name": "Reaction1",
"severity": "Medium"
}
]
}
],
Спасибо. Название реакции может быть nil. почему я получаю эту ошибку? Ошибка/Ошибка: response_reaction_names = response_body ['actions ']. Map {| a | a ['name']} NoMethodError: undefined method 'map 'for nil: NilClass – Micheal
Соответствующая функция patient_allergy_reaction не существует в базе данных. в некоторых случаях будет только больной. Я напечатал json в своем коде выше – Micheal
@ Micheal: обновлен, чтобы отразить структуру JSON. – PinnyM