У меня есть контроллер рельсы, который возвращает только JSONКак проверить ответ json в тестах контроллера?
def index
if params[:filtered] = 'someValue'
@json = Model.where(some_conditions).to_json
else
@json = Model.where(some_other_conditions).to_json
end
render json: @json
end
Что такое правильный способ проверить, что действие возвращает ожидаемый @json объектов?
Я попытался следующие
describe "GET #index" do
before :each do
get :index, filtered: 'someValue'
end
it { expect(response.body).to eq 'my expected response' }
end
Но я получаю
Failure/Error: it { expect(response.body).to eq 'my expected response' }
expected: 'my expected response'
got: "[]"
У меня возникли проблемы определения того, существует проблема в базовом контроллере, или Я просто написал плохой тест.
Действительно ли response.body
правильный способ получить полезную нагрузку json?
Помогите оценить!
пустой массив будет возвращен, если запрос не возвращает результат. –
Да, я это понимаю. Но верно ли обратное? Если 'response.body' содержит объекты json, если запрос возвращает объекты. На этом этапе я считаю, что запрос должен содержать объекты. –
Thats true. Если ответ возвращает объекты, тогда ответ будет иметь их, конечно, сериализован для json. –