2015-05-26 172 views
1
describe 'salary acceptance email' do 
    let!(:effective_date) { Date.current.next_week } 
    let(:salary) { FactoryGirl.create(:salary) } 

    it 'displays admin selected effective_date', js: true do 

    page.visit approval_path(salary) 
    page.uncheck('default_effective_date') 
    select effective_date.year.to_s, from: 'offer_effective_date_date_1i' 
    select I18n.t("date.month_names")[effective_date.month] , from: 'offer_effective_date_date_2i' 
    select effective_date.day.to_s, from: 'offer_effective_date_date_3i' 
    click_on 'Accept' 
    #binding.pry or wait_for_ajax - hack to let the test pass 

    expect(mail.body).to include_in_each_part(salary.amount) 
    expect(mail.body).to include_in_each_part(effective_date.strftime('%Y-%m-%d')) 
    end 
end 

沒有在這部分代碼不同的是有其中隱藏/顯示EFFECTIVE_DATE date_select標籤一個JavaScript任何AJAX請求郵件程序真引起的延遲。 當我添加js:true到規格郵件[=> ActionMailer :: Base.deliveries .last]時返回nil,但如果允許測試等待一秒鐘或兩秒鐘,則可以正常工作。如何在沒有HACK的情況下解決這個問題! :(Rspec的護欄-水豚JS:在導致測試失敗

水豚版本:水豚(1.1.3)
的Webkit版本:水豚,WebKit的(0.13.0)

回答

0

我能夠通過增加檢查該網頁上的東西得到這個工作它點擊後改變接受

describe 'salary acceptance email' do 
let!(:effective_date) { Date.current.next_week } 
let(:salary) { FactoryGirl.create(:salary) } 

it 'displays admin selected effective_date', js: true do 

    page.visit approval_path(salary) 
    page.uncheck('default_effective_date') 
    select effective_date.year.to_s, from: 'offer_effective_date_date_1i' 
    select I18n.t("date.month_names")[effective_date.month] , from: 'offer_effective_date_date_2i' 
    select effective_date.day.to_s, from: 'offer_effective_date_date_3i' 
    click_on 'Accept' 

    expect(page).to have_content("Acceptance Completed Successfully") 
    expect(mail.body).to include_in_each_part(salary.amount) 
    expect(mail.body).to include_in_each_part(effective_date.strftime('%Y-%m-%d')) 
end 
end 

所有學分豚團隊:星:在https://groups.google.com/forum/#!topic/ruby-capybara/EpbORzw7rq8

。檢查出更多細節