capybara/rspecを使用してレールをテストする。現在のパスがIDで正しく生成されていることを確認したいのですが、作成したContact IDにアクセスできません。Capybara Rspec RailsがパスIDを取得
例期待: はlocalhost:3000 /コンタクト/ 27
例受け取っ: はlocalhost:3000 /コンタクト/
コードベース:
feature 'contacts' do
before do
visit '/'
click_link 'Sign up'
fill_in 'Email', with: '[email protected]'
fill_in 'Password', with: '123456'
fill_in 'Password confirmation', with: '123456'
click_button 'Sign up'
click_link 'Add a contact'
fill_in 'Firstname', with: 'John'
fill_in 'Surname', with: 'Jones'
fill_in 'Email', with: '[email protected]'
fill_in 'Phone', with: '223344'
attach_file('contact[image]', Rails.root + 'spec/mouse1.jpeg')
click_button 'Create Contact'
end
context 'view a contact' do
scenario 'click contact to view details' do
click_link('Mouse1')
expect(page).to have_content 'John Jones 223344 [email protected]'
expect(page).to have_xpath("//img[contains(@src, \/html/body/a[2]/img\)]")
expect(page).to have_current_path(contact_path("#{@contact.id}"))
end
end
補間が働いていない驚い以下を使用して、NilClassに対して未定義のエラーメソッド 'id'をスローします。明らかに、それはIDにアクセスできません。
@p = Contact.find_by_id(params[:id])
でスワップアウトして、補間で@pを渡してみました。しかし、エラーをスローするundefined local variable or method params
アイデア/思考?
ここで、変数@content.id'が定義されていますか? –
こんにちは@ contacts_controller.rbのЗелёный。 – blastoff
あなたの機能テストでコントローラからの_instance変数( '@ contact')に何がアクセスできるのか考えているのはなぜですか?できません。 –