Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 迈克尔·哈特尔';s教程第8章_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 迈克尔·哈特尔';s教程第8章

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

我正在做MH的教程,我不断地得到这三个错误。这是说“提交”是一个未定义的变量,我不明白为什么。不知道问题出在哪里。有什么建议吗

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