Rails Test "ActionController :: UnknownFormat: отсутствует шаблон для этого формата и варианта запроса" - PullRequest
0 голосов
/ 28 сентября 2018

Я создаю набор тестов для приложения-клона Twitter под названием «Canary», и мне трудно писать интеграционные тесты для chirps # reply и chirps # rechirps

Chirps Controller

def reply
    @chirp = current_user.chirps.new
    @parent = Chirp.find_by(id: params[:parent_id])
    @chirp.parent_id = params[:parent_id]
    respond_to do |format|
        format.js
        format.html
    end
end

def rechirp
    @chirp = current_user.chirps.new
    @reference = Chirp.find_by(id: params[:reference_id])
    @chirp.reference_id = params[:reference_id]
    respond_to do |format|
        format.js
        format.html
    end 
end

Chirp View

<%= link_to reply_chirp_path(current_user, parent_id: chirp.id), remote: true, data: { target: '#modal_container', toggle: 'modal' } do %>
    <%= icon('far', 'comment') %> <%= chirp.children.size if chirp.children.size > 0 %>
<% end %>

<%= link_to rechirp_chirp_path(current_user, reference_id: chirp.id), remote: true, data: { target: '#modal_container', toggle: 'modal' } do %>
    <%= icon('fas', 'retweet') %> <%= count_rechirps(chirp) %>
<% end %>

Reply.js.erb

$("#modal_container").find(".modal-content").html("<%= j render 'chirps/modal_reply' %>");
$("#modal_container").modal('show', 'focus');

Rechirp.js.erb

$("#modal_container").find(".modal-content").html("<%= j render 'chirps/modal_rechirp' %>");
$("#modal_container").modal('show', 'focus');

Тест интерфейса Chirps

# Try to reply to chirp
assert_select 'a[href=?]', reply_chirp_path(@user, parent_id: @chirp.id)
assert_difference 'Chirp.count', 1 do
    get reply_chirp_path(@user, parent_id: @chirp)
    assert_select 'div#modal_container > div.modal-dialog > div.modal-content > div.modal-body'
    post chirps_path, params: { chirp: { content: content, parent_id: @chirp.id } }
    assert :success
end
assert_redirected_to root_url
follow_redirect!
# Try to rechirp chirp
assert_select 'a[href=?]', rechirp_chirp_path(@user, reference_id: @chirp.id)

При запуске chirp_interface_test.rb я продолжаю сталкиваться с той же ошибкой:

Ошибка: ChirpsInterfaceTest # test_chirp_interface:

ActionController :: UnknownFormat: ChirpsController # ответ отсутствуетшаблон для этого формата и варианта запроса.

request.formats: ["text / html"]

request.variant: []

test/integration/chirps_interface_test.rb:30:in `block (2 levels) in <class:ChirpsInterfaceTest>'

test/integration/chirps_interface_test.rb:29:in `block in <class:ChirpsInterfaceTest>'

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

1 Ответ

0 голосов
/ 28 сентября 2018

Ошибка: ChirpsInterfaceTest # test_chirp_interface:

ActionController :: UnknownFormat: ChirpsController # в ответе отсутствует шаблон для этого формата и варианта запроса.

request.formats: ["text/ html "]

request.variant: []

Ваши ссылки имеют remote: true.Это означает, что запрос JS.Чтобы проверить такие ссылки, вы должны использовать xhr: true, например, так:

get reply_chirp_path(@user, parent_id: @chirp), xhr: true

Поскольку вы не указали это, запрос обрабатывается как HTML и завершается с этим исключением.

Для получения дополнительной информации прочитайте Тестирование запросов XHR (AJAX)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...