2016-03-27 26 views
0

RSpec & Capybara kullanarak BDD uygulanan bir Rails uygulaması yazıyorum. Testlerimden biri başarısız olmaya devam ediyor. Testin amacı, indeks sayfasında görüntülenen her bir Makine kaydının, düzenleme linkini tıklatarak, detay düzenleme sayfasını görselleştirerek sonuçlanıp sonuçlanmadığını kontrol etmektir. Uygulamamı çalıştırdığımda, bu işlevsellik çalışır. Sanırım, RSpec senaryomda bir sorun var. !RSpec/Capybara "bekliyor (sayfa) .to have_content" içerik sayfa.html içinde test başarısız olur.

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 

senaryoyu ayıklama, @existing_machine nesne doğru .create aracılığıyla doldurulur görünüyor() yöntemi: İşte testin kod

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)>' 

: Burada

başarısız testi var daha önce engellemek. ayıklayıcısında page.html teftiş yaparken

screenshot of debug window in IDE

, ben "RX22" dizesi görünen görüyorsunuz. beklemek (sayfa) çalıştırırken

screenshot of page.html inspection

Peki neden RSpec/Capybara .to have_content (@ existing_machine.model) aynı içeriği görmüyor?

cevap

0

RX22, metin içeriğine sahip olmayan bir giriş öğesinin değeridir, dolayısıyla farklı bir şekilde denetlemeniz gerekir.

expect(page).to have_field('Model', with: 'RX22') 

gibi bir şey

+0

sayesinde çok çalışmalı! işe yarıyor! öğrenmek için eğlenceli. – lbaeyens