Rails rspec render_template 错误
Rails rspec render_template error
我在 Rails 教程中关注 Hartl 的 Ruby,但无法弄清楚为什么以下代码一直给我这个错误:
Failure/Error: expect(response).to render_template("membres/show")
NoMethodError:
undefined method `body' for nil:NilClass
代码:
require 'rails_helper'
RSpec.describe "Membres", :type => :request do
include Capybara::DSL
describe "une inscription" do
describe "ratée" do
it "ne devrait pas créer un nouvel utilisateur" do
visit signup_path
fill_in "Nom", :with => ""
fill_in "Email", :with => ""
fill_in "Password", :with => ""
fill_in "Confirmation", :with => ""
click_button "Inscription"
expect(response).to render_template("membres/show")
expect(response).to have_tag("div#error_explanation")
end
end
end
end
我尝试在错误的行上使用 "page" 而不是 "response",我也尝试使用其他 link 而不是 "membres/show" 但没有任何效果。
现在有人知道吗?
编辑
我应该使用 "page" 而不是 "response",但这仍然不能清除错误消息。
这是解决该问题的方法。
在您的错误消息中查找 "test_case.rb" 的路径和错误行:
NoMethodError:
undefined method `body' for nil:NilClass
# /var/lib/gems/1.9.1/gems/actionpack-4.2.0/lib/action_controller/test_case.rb:111:in `assert_template'
# ./spec/requests/membres_spec.rb:21:in `block (5 levels) in <top (required)>'
# ./spec/requests/membres_spec.rb:23:in `block (4 levels) in <top (required)>'
在我的例子中,文件位于“/var/lib/gems/1.9.1/gems/actionpack-4.2.0/lib/action_controller/”,错误行是 111.
使用您最喜欢的文本编辑器,以 root 身份打开 "test_case.rb",转到指定的行,它应该如下所示:
response.body
改为:
response.body if !response.nil?
并且您应该可以使用 render_template 或 assert_template 而无需使用:
get
或
post
就我而言,我可以使用
visit
这不会创建 "response" 对象,因此会出现错误消息。
我在 Rails 教程中关注 Hartl 的 Ruby,但无法弄清楚为什么以下代码一直给我这个错误:
Failure/Error: expect(response).to render_template("membres/show")
NoMethodError:
undefined method `body' for nil:NilClass
代码:
require 'rails_helper'
RSpec.describe "Membres", :type => :request do
include Capybara::DSL
describe "une inscription" do
describe "ratée" do
it "ne devrait pas créer un nouvel utilisateur" do
visit signup_path
fill_in "Nom", :with => ""
fill_in "Email", :with => ""
fill_in "Password", :with => ""
fill_in "Confirmation", :with => ""
click_button "Inscription"
expect(response).to render_template("membres/show")
expect(response).to have_tag("div#error_explanation")
end
end
end
end
我尝试在错误的行上使用 "page" 而不是 "response",我也尝试使用其他 link 而不是 "membres/show" 但没有任何效果。
现在有人知道吗?
编辑
我应该使用 "page" 而不是 "response",但这仍然不能清除错误消息。
这是解决该问题的方法。
在您的错误消息中查找 "test_case.rb" 的路径和错误行:
NoMethodError:
undefined method `body' for nil:NilClass
# /var/lib/gems/1.9.1/gems/actionpack-4.2.0/lib/action_controller/test_case.rb:111:in `assert_template'
# ./spec/requests/membres_spec.rb:21:in `block (5 levels) in <top (required)>'
# ./spec/requests/membres_spec.rb:23:in `block (4 levels) in <top (required)>'
在我的例子中,文件位于“/var/lib/gems/1.9.1/gems/actionpack-4.2.0/lib/action_controller/”,错误行是 111.
使用您最喜欢的文本编辑器,以 root 身份打开 "test_case.rb",转到指定的行,它应该如下所示:
response.body
改为:
response.body if !response.nil?
并且您应该可以使用 render_template 或 assert_template 而无需使用:
get
或
post
就我而言,我可以使用
visit
这不会创建 "response" 对象,因此会出现错误消息。