2013-11-09 83 views
1

我發現這在一個演示應用程序:有沒有人用RSpec測試過best_in_place測試幫助器方法?

it "should be able to use bip_text to update a text field" do 
    @user.save! 
    visit user_path(@user) 
    within("#email") do 
     page.should have_content("[email protected]") 
    end 

    bip_text @user, :email, "[email protected]" 

    visit user_path(@user) 
    within("#email") do 
     page.should have_content("[email protected]") 
    end 
    end 

https://github.com/dougc84/best_in_place/blob/master/spec/integration/js_spec.rb

似乎很容易。

所以我把它複製到我的水豚規格:

before (:each) do 
    @report = FactoryGirl.create(:report) 
    visit report_path(@report) 
    end 
    it "name", :focus do 
    within("#name") do 
     page.should have_content @report.name 
    end 
    bip_text @report, :name, "new name" 
    visit report_path(@report) 
    within("#name") do 
     page.should have_content "new name" 
    end 
    end 

它是如此快,我幾乎看不到任何東西,但它看起來像它做#NAME領域的東西。然後頁面重新加載,它仍然是舊值。

任何幫助?

哦,順便說一句它在瀏覽器中運行。只是無法通過測試。

回答

0

我之前和之後bip_幫手加入sleep 1,和它的工作。

0

這裏的問題是由bip_text運行的Javascript是異步的,但是在您的下一行中,您立即轉到不同的頁面,從而完成了該JavaScript的切斷。這就是爲什麼你的sleep 1修復它。你也可以通過讓水豚在visit report_path之前等待一些新的內容來解決它,但是你需要寫一些類似成功的消息到頁面(例如用ajax:success JS回調)。