2017-02-23 6 views
1

RSpecテストを作成してテキストフィールドに入力しようとすると、次のエラーが表示されます。RSpecテストを書くときにエラーが発生するCapybara :: ElementNotFound:フィールドが見つからない

1) coordinators/new.html.erb populate page name text entry field filled checks for presence of filled in text field 
Failure/Error: fill_in "coordinator_name", with: 'JoeJoe' 

Capybara::ElementNotFound: 
    Unable to find field "coordinator_name" 
# ./spec/views/coordinators/new.html.erb_spec.rb:47:in `block (4 levels) in <top (required)>' 

ここには、「コーディネーター名」フィールドがある前のテストを含む、私のコードの一部です。 2回目のテストでなぜそれが見つからないのか混乱していますか?

describe 'name text entry field' do 
    it 'checks for presence of empty text field for name' do 
    expect(rendered).to have_field('coordinator_name', text: nil) 
    end 
end 

describe 'name text entry field filled' do 
    it 'checks for presence of filled in text field' do 
    fill_in "coordinator_name", with: 'JoeJoe' 
    expect(rendered).to have_field('coordinator_name', text: 'JoeJoe') 
    end 
end 

解決方法のヒントはありますか?

+0

あなたのテストコードは、have_fieldにhave_fieldオプションを渡していることを示しています - have_fieldは ':text'オプションをとらないので、フィールドの値をテストしようとすると':with'オプションを使いますまた、 'レンダリング'とは何ですか?私はあなたが間違っていることを見ている。 –

+0

@KevinEtoreこれは空のファイルです(HTMLはありません)。しかし、私はsave_and_open_pageを "名前のための空のテキストフィールドの有無の確認"テストにも入れて同じことが起こります( – JSmooth

答えて

1

ここで問題となるのは、ビューテストを作成していることです。ビューテストはページのコンテンツをチェックできますが、ページとの対話はできません。通常の設定では、capybara matchersがビューのスペックに含まれますが、Capybara :: DSLは-ではないので、fill_inはビューの仕様でも使用できません。私はCapybara :: DSLをすべての仕様に含めることでそれをオーバーライドしたと仮定していますか?

2番目の仕様では、機能仕様書を作成する必要があります。

+0

spec/rails_helper.rbファイルにCapybara :: DSLを含めました) – JSmooth

+1

@Joseph Rightこれは間違っているすべてのスペックタイプに 'capybara/spec''yだけを必要とし、DSLは機能テストにのみ含まれます。これは実際にページと対話できる場所です。マッチャーはビューのスペックにも含まれます。フィールドの存在を確認することはできますが、フィールドの変更はできません。 –

関連する問題