2012-04-12 7 views
1

私はRailsのテストを書くのが初めてで、RoRチュートリアル​​に従っています。私は独自のテストユーティリティメソッド、sign_upを追加しようとしています。すでに、utility.rbのsign_inメソッドと似ています。私のサインアップページに対してそれを呼び出すとき、しかし、私はこのエラーを取得:utility.rbのsign_upユーティリティテストメソッドの呼び出しが失敗する

2) User pages index pagination as an admin user to unlock new users 
    Failure/Error: sign_up user 
    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/support/utilities.rb:33:in `sign_up' 
    # ./spec/requests/user_pages_spec.rb:63:in `block (5 levels) in <top (required)>' 

マイsign_upメソッドは次のようになります。

def sign_up(user) 
    visit signup_path 
    fill_in "Name",   with: user.name 
    fill_in "Email",  with: user.email 
    fill_in "Password",  with: user.password 
    fill_in "Confirmation", with: user.password 
    click_button "Sign up" 
end 

それも、ただsignup_pathを訪問間違って行くを開始しているようです - 私はそこに行くのかどうかは分からない。また、fill_in "Name"行をコメントアウトすると、同じ方法でfill_in "Email"行がチョークされます。

ここで何が起こっているかについてのご意見やご提案は大変ありがとうございます。

おかげで、 -Matt

答えて

0

は、電球は最終的に行ってきました。

ファクトリを使用してユーザーを作成すると、DBに挿入されます。あなたがサインアップページにアクセスしてそのユーザーを使用しようとすると、既にが存在し、ホームページにリダイレクトされます。これは、fill_inで使用されるフィールドが存在しないことを意味します。簡体スペック:

require 'spec_helper' 

describe "signup page" do 
    subject { page } 

    describe "with valid information" do 
    before { sign_up('em', '[email protected]', '123456') } 
    it { should have_title_and_h1('em') } 
    end 
end 

ユーティリティメソッド:

def sign_up(name, email, password) 
    visit signup_path 
    fill_in "Name",   with: name 
    fill_in "Email",  with: email 
    fill_in "Password",  with: password 
    fill_in "Confirmation", with: password 
    click_button "Create my account" 
end 

は、ブラウザインタフェースを介してユーザを作成します。

関連する問題