Ich schreibe eine Rails App Anwendung BDD mit RSpec & Capybara. Einer meiner Tests scheitert weiterhin. Das Ziel des Tests besteht darin, zu prüfen, ob für jeden Maschinendatensatz, der auf der Indexseite angezeigt wird, durch Klicken auf den Bearbeitungslink die Detailbearbeitungsseite angezeigt wird. Wenn ich meine Anwendung ausführe, funktioniert diese Funktionalität. Ich denke, mit meinem RSpec-Szenario stimmt etwas nicht.RSpec/Capybara "expect (page) .to have_content" -Test schlägt fehl, während der Inhalt in page.html ist
Hier ist der Fehler-Test:
Failures:
1) existing machines have a link to an edit form
Failure/Error: expect(page).to have_content(@existing_machine.model)
expected to find text "RX22" in "Toggle navigation uXbridge Catalogue Settings Brands Machine Types Machine Groups Repair States Titles User Signed in as [email protected] Sign out Machine details Brand TORO Model Machine type ZITMAAIER Description Engine Purchase Price Unit Price VAT Minimal Stock Current Stock Warehouse Location"
# ./spec/features/machine_spec.rb:50:in `block (2 levels) in <top (required)>'
Hier ist der Code des Tests:
RSpec.feature 'existing machines' do
before do
@john = User.create!(email: '[email protected]', password: 'password')
login_as @john
brand = Brand.create!(name: 'TORO')
machinegroup = Machinegroup.create!(name: 'GAZON')
machinetype = Machinetype.create!(name: 'ZITMAAIER', machinegroup_id: machinegroup.id)
@existing_machine = Machine.create!(brand_id: brand.id, model: 'RX22', machinetype_id: machinetype.id, description: 'fantastic machine', engine: '100PK')
end
scenario 'have a link to an edit form' do
visit '/machines'
find("a[href='/machines/#{@existing_machine.id}/edit']").click
expect(page).to have_content('Machine details')
expect(page).to have_content(@existing_machine.model)
end
end
Wenn das Szenario Debuggen, das @existing_machine Objekt durch die .Create richtig bevölkert scheint (Methode) im Vorher blockieren.
screenshot of debug window in IDE
Wenn die seite.html im Debugger die Kontrolle, ich sehe die "RX22" string erscheint.
screenshot of page.html inspection
Warum also RSpec/Capybara nicht den gleichen Inhalt sehen, wenn die Ausführung erwarten (Seite) .to have_content (@ existing_machine.model)?
Dank viel Arbeit! Es klappt! Spaß zu lernen. – lbaeyens