第9章测试失败的Ruby on rails教程

时间:2013-04-10 10:50:37

标签: ruby-on-rails-3

我是Rails中的新手,我正在阅读Michael Hartl的RubyOnRails教程...我已经阅读了第9章类似的问题,但我没有解决我自己的问题,所以这里是我的github存储库和失败的测试...也许某人可以帮助我,非常感谢;)

https://github.com/AntonioCortinaL/sample_app

1) UserPages edit page 
 Failure/Error: it { should have_selector('h1',       text: "Update your profile") }
   expected css "h1" with text "Update your profile" to return something
 # ./spec/requests/user_pages_spec.rb:61:in `block (4 levels) in <top (required)>'

2) UserPages edit page 
 Failure/Error: it { should have_selector('title',    text: "Edit user") }
   expected css "title" with text "Edit user" to return something
 # ./spec/requests/user_pages_spec.rb:62:in `block (4 levels) in <top (required)>'

3) UserPages edit page 
 Failure/Error: it { should have_link('change', href: 'http://gravatar.com/emails') }
   expected link "change" to return something
 # ./spec/requests/user_pages_spec.rb:63:in `block (4 levels) in <top (required)>'

4) UserPages edit with invalid information 
 Failure/Error: before { click_button "Save changes" }
 Capybara::ElementNotFound:
   no button with value or id or text 'Save changes' found
 # (eval):2:in `click_button'
 # ./spec/requests/user_pages_spec.rb:67:in `block (4 levels) in <top (required)>'

5) UserPages edit with valid information 
 Failure/Error: fill_in "Name",             with: new_name
 Capybara::ElementNotFound:
   cannot fill in, no text field, text area or password field with id, name, or label 'Name' found
 # (eval):2:in `fill_in'
 # ./spec/requests/user_pages_spec.rb:76:in `block (4 levels) in <top (required)>'

6) UserPages edit with valid information 
 Failure/Error: fill_in "Name",             with: new_name
 Capybara::ElementNotFound:
   cannot fill in, no text field, text area or password field with id, name, or label 'Name' found
 # (eval):2:in `fill_in'
 # ./spec/requests/user_pages_spec.rb:76:in `block (4 levels) in <top (required)>'

7) UserPages edit with valid information 
 Failure/Error: fill_in "Name",             with: new_name
 Capybara::ElementNotFound:
   cannot fill in, no text field, text area or password field with id, name, or label 'Name' found
 # (eval):2:in `fill_in'
 # ./spec/requests/user_pages_spec.rb:76:in `block (4 levels) in <top (required)>'

8) UserPages edit with valid information 
 Failure/Error: fill_in "Name",             with: new_name
 Capybara::ElementNotFound:
   cannot fill in, no text field, text area or password field with id, name, or label 'Name' found
 # (eval):2:in `fill_in'
 # ./spec/requests/user_pages_spec.rb:76:in `block (4 levels) in <top (required)>'

9) UserPages edit with valid information 
 Failure/Error: fill_in "Name",             with: new_name
 Capybara::ElementNotFound:
   cannot fill in, no text field, text area or password field with id, name, or label 'Name' found
 # (eval):2:in `fill_in'
 # ./spec/requests/user_pages_spec.rb:76:in `block (4 levels) in <top (required)>'

Paul Fioravanti回答后编辑:

好的,谢谢......我为此改变了它:

 before do
  sign_in user
  visit edit_user_path(user) 
 end

现在有5个错误

1) UserPages edit with valid information 
 Failure/Error: fill_in "Confirm Password", with: user.password
 Capybara::ElementNotFound:
   cannot fill in, no text field, text area or password field with id, name, or label 'Confirm Password' found
 # (eval):2:in `fill_in'
 # ./spec/requests/user_pages_spec.rb:81:in `block (4 levels) in <top (required)>'

2) UserPages edit with valid information 
 Failure/Error: fill_in "Confirm Password", with: user.password
 Capybara::ElementNotFound:
   cannot fill in, no text field, text area or password field with id, name, or label 'Confirm Password' found
 # (eval):2:in `fill_in'
 # ./spec/requests/user_pages_spec.rb:81:in `block (4 levels) in <top (required)>'

3) UserPages edit with valid information 
 Failure/Error: fill_in "Confirm Password", with: user.password
 Capybara::ElementNotFound:
   cannot fill in, no text field, text area or password field with id, name, or label 'Confirm Password' found
 # (eval):2:in `fill_in'
 # ./spec/requests/user_pages_spec.rb:81:in `block (4 levels) in <top (required)>'

4) UserPages edit with valid information 
 Failure/Error: fill_in "Confirm Password", with: user.password
 Capybara::ElementNotFound:
   cannot fill in, no text field, text area or password field with id, name, or label 'Confirm Password' found
 # (eval):2:in `fill_in'
 # ./spec/requests/user_pages_spec.rb:81:in `block (4 levels) in <top (required)>'

5) UserPages edit with valid information 
 Failure/Error: fill_in "Confirm Password", with: user.password
 Capybara::ElementNotFound:
   cannot fill in, no text field, text area or password field with id, name, or label 'Confirm Password' found
 # (eval):2:in `fill_in'
 # ./spec/requests/user_pages_spec.rb:81:in `block (4 levels) in <top (required)>'

2 个答案:

答案 0 :(得分:1)

Your user_pages_spec.rb test说:

describe "edit" do
  let(:user) { FactoryGirl.create(:user) }
  before { visit edit_user_path(user) }
  # ...
end

sign_in visit之前忘了edit_user_path

Here's the tutorial's equivalent spec

修改

至于您的第二个问题,请参阅Rails教程here中的等效链接。比较 user_pages_spec.rb herehere:您可以看到您正在尝试fill_in "Confirm Password"字段和{{1} }字段,您的应用中只有一个实际存在...

答案 1 :(得分:0)

确保在运行测试套件之前使用rails控制台为每个用户提供有效的记忆令牌。按照8.2.4进行精确说明。