Rails, тестирование json ответа, когда javascript также возвращается - PullRequest
0 голосов
/ 22 февраля 2020

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

respond_to do |format|
     if @comment.update(comment)
       format.json { render :news, status: :success, location: @comment }
       format.js   { }
     else
       format.json { render json: @comment.errors, status: :unprocessable_entity }
       format.js   { }
    end
end

Я пытался вернуть статусные ответы, как показано ниже, чтобы проверить статус, а не читать JSON

head(422)

и

format.js { head :unprocessable_entity }

Хотя кажется, что они работают с точки зрения получения ответа, они также блокируют выполнение JavaScript. При попытке установить содержимое тела я могу только прочитать JavaScript, JSON, кажется, не присутствует.

 put update_comment_url(@comment), params: { comment: { uncensored: @comment.uncensored, id_reference: @comment.id_reference, page_type: @comment.page_type, replied_to: @comment.replied_to, user_id: @comment } }, xhr: true

Когда явно запрашивается определенный формат, как показано ниже

put update_comment_url(@comment), params: { comment: { uncensored: @comment.uncensored, id_reference: @comment.id_reference, page_type: @comment.page_type, replied_to: @comment.replied_to, user_id: @comment },  :format => 'json'  }, xhr: true

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

1 Ответ

0 голосов
/ 25 февраля 2020

В случае, если кто-то новичок в рельсах ищет тот же ответ, я понял его после некоторой проб и ошибок. Мне кажется, что простое помещение нужного формата в круглые скобки мне подходит.

put update_comment_url(@comment, format: :json), params: { comment: { uncensored: @comment.uncensored, id_reference: @comment.id_reference, page_type: @comment.page_type, replied_to: @comment.replied_to, user_id: @comment }}, xhr: true
...