简体   繁体   English

Rails测试“ ActionController :: UnknownFormat:缺少此请求格式和变体的模板”

[英]Rails Test “ActionController::UnknownFormat: is missing a template for this request format and variant”

I'm creating a testing suite for a Twitter clone app called "Canary" and I'm having a hard time writing integration tests for chirps#reply and chirps#rechirps 我正在为一个名为“ Canary”的Twitter克隆应用程序创建一个测试套件,并且很难编写针对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 rp视图

<%= 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 Reply.js.erb

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

Rechirp.js.erb Rechirp.js.erb

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

Chirps Interface Test 线性调频接口测试

# 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)

When I run chirp_interface_test.rb I keep encountering the same error: 当我运行chirp_interface_test.rb时,我总是遇到相同的错误:

Error: ChirpsInterfaceTest#test_chirp_interface: 错误:ChirpsInterfaceTest#test_chirp_interface:

ActionController::UnknownFormat: ChirpsController#reply is missing a template for this request format and variant. ActionController :: UnknownFormat:ChirpsController#reply缺少此请求格式和变体的模板。

request.formats: ["text/html"] request.formats:[“ text / html”]

request.variant: [] 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>' 

I know that the routes work in app because I've successfully submitted by replies and rechirps multiple times through the localhost. 我知道路由在应用程序中有效,因为我已成功通过答复提交并通过本地主机多次提交。 How can I test that these actions work properly with rails testing? 如何在Rails测试中测试这些动作是否正常工作?

Error: ChirpsInterfaceTest#test_chirp_interface: 错误:ChirpsInterfaceTest#test_chirp_interface:

ActionController::UnknownFormat: ChirpsController#reply is missing a template for this request format and variant. ActionController :: UnknownFormat:ChirpsController#reply缺少此请求格式和变体的模板。

request.formats: ["text/html"] request.formats:[“ text / html”]

request.variant: [] request.variant:[]

Your links have remote: true . 您的链接具有remote: true That means the request is JS . 这意味着请求是JS To test such links, you should use xhr: true like so 要测试这样的链接,您应该像这样使用xhr: true

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

Since you haven't specified this, the request is treated as HTML and fails with that exception. 由于您未指定此选项,因此该请求被视为HTML并因该异常而失败。

For more info, read Testing XHR (AJAX) requests 有关更多信息,请阅读测试XHR(AJAX)请求

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 ActionController :: UnknownFormat /缺少模板错误 - ActionController::UnknownFormat / Missing template error Rails测试失败-ActionController :: UnknownFormat: - Failing rails test - ActionController::UnknownFormat: Rails 4 ActionController :: UnknownFormat format.js错误 - Rails 4 ActionController::UnknownFormat format.js error Rails 6.0.1 中 Ajax 请求的 ActionController::UnknownFormat 错误 - ActionController::UnknownFormat error with Ajax request in Rails 6.0.1 缺少此请求格式和变体的模板 - missing a template for this request format and variant Rails ajax聊天应用程序缺少此请求格式和变体的模板 - Rails ajax chat app missing a template for this request format and variant Rails Prawn UnknownFormat(ActionController :: UnknownFormat): - Rails Prawn UnknownFormat (ActionController::UnknownFormat): 在Rails应用程序中使用Devise gem时,Users :: OmniauthCallbacksController#facebook中的ActionController :: UnknownFormat错误(缺少模板)吗? - ActionController::UnknownFormat error (missing template) in Users::OmniauthCallbacksController#facebook when using Devise gem in a rails application? rails4 // ActionController :: UnknownFormat - rails4 // ActionController::UnknownFormat Rails中的ActionController UnknownFormat错误4 - ActionController UnknownFormat Error in rails 4
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM