Mit Capybara/Rspec Schienen zu testen. Möchten Sie überprüfen, ob der aktuelle Pfad korrekt mit der ID generiert wurde, aber nicht auf die erstellte Kontakt-ID zugreifen kann.Capybara Rspec Rails erhalten ID für Pfad
Beispiel Erwartung: localhost: 3000/Kontakte/27
Beispiel erhielt: localhost: 3000/Kontakte/
-Code base:
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
überraschte die Interpolation nicht gearbeitet hat, und wirft Fehler undefinierte Methode 'ID' für NilClass mit dem folgenden. Natürlich kann es nicht auf die ID zugreifen.
auch versucht, es mit Auslagern @p = Contact.find_by_id(params[:id])
dann in der Interpolation in den @p vorbei. Aber wirft Fehler undefined local variable or method params
Irgendwelche Ideen/Gedanken?
Wo ist eine Variable '@ contact.id' definiert? –
hi @ Зелёный in der contacts_controller.rb. – blastoff
Warum denken Sie, was Sie auf eine _instance-Variable ('@ contact') _ vom Controller in Ihrem Feature-Test zugreifen können? Du kannst nicht. –