Ruby on rails 迈克尔·哈特尔';s教程第8章
我正在做MH的教程,我不断地得到这三个错误。这是说“提交”是一个未定义的变量,我不明白为什么。不知道问题出在哪里。有什么建议吗Ruby on rails 迈克尔·哈特尔';s教程第8章,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在做MH的教程,我不断地得到这三个错误。这是说“提交”是一个未定义的变量,我不明白为什么。不知道问题出在哪里。有什么建议吗 Failures: 1) User pages after saving the user Failure/Error: before { click_button submit } NameError: undefined local variable or method `submit' for #<RSpec::Co
Failures:
1) User pages after saving the user
Failure/Error: before { click_button submit }
NameError:
undefined local variable or method `submit' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_4:0x007f8e816f7c70>
# ./spec/requests/user_pages_spec.rb:50:in `block (3 levels) in <top (required)>'
2) User pages after saving the user
Failure/Error: before { click_button submit }
NameError:
undefined local variable or method `submit' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_4:0x007f8e841d4740>
# ./spec/requests/user_pages_spec.rb:50:in `block (3 levels) in <top (required)>'
3) User pages after saving the user
Failure/Error: before { click_button submit }
NameError:
undefined local variable or method `submit' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_4:0x007f8e84265d80>
# ./spec/requests/user_pages_spec.rb:50:in `block (3 levels) in <top (required)>'
Finished in 0.00577 seconds
3 examples, 3 failures
Failed examples:
rspec ./spec/requests/user_pages_spec.rb:53 # User pages after saving the user
rspec ./spec/requests/user_pages_spec.rb:55 # User pages after saving the user
rspec ./spec/requests/user_pages_spec.rb:54 # User pages after saving the user
我在规范中快速修复了你的格式,现在看看,应该更清楚为什么 您在
注册
上下文中定义了let(:submit){“Create my account”}
,但在保存用户后,您试图在上下文外部的中使用它。您需要将其移出,以便双方都可以看到它,或者在其他上下文中重新定义它
老实说,您的部分规范没有意义,您提交了什么?要测试保存用户后的块,您应该在创建用户成功时执行此操作,这意味着内部具有有效信息的上下文,因此,在将用户保存到描述“使用有效信息”中后,您必须将上下文嵌套在“注册”
上下文中的,并且您已经有了创建提交变量的let(:submit)声明
您的代码如下所示:
describe "sign up" do
before { visit signup_path }
let(:submit) { "Create my account" }
.
.
.
.
describe "with valid information" do
# here you fill fields for signing up a new user
.
.
.
describe "after saving the user" do
# when you are here, you have already filling fields of signup form, so you should submit these fields and the code below let you do this
before { click_button submit }
let(:user) { User.find_by_email('user@example.com') }
it { should have_selector('title', text: user.name) }
it { should have_selector('div.alert.alert-success', text: 'Welcome') }
it { should have_link('Sign out') }
end
end
end
结论:在注册
块的结束之前,保存用户
块后只需移动
describe "sign up" do
before { visit signup_path }
let(:submit) { "Create my account" }
.
.
.
.
describe "with valid information" do
# here you fill fields for signing up a new user
.
.
.
describe "after saving the user" do
# when you are here, you have already filling fields of signup form, so you should submit these fields and the code below let you do this
before { click_button submit }
let(:user) { User.find_by_email('user@example.com') }
it { should have_selector('title', text: user.name) }
it { should have_selector('div.alert.alert-success', text: 'Welcome') }
it { should have_link('Sign out') }
end
end
end