2016-10-11 21 views
0

我想盡可能取得最好的地方 test helpers 在我的應用程序工作。我正在使用 Capybara with Test::Unit 我寫過這樣的測試。無法找到與測試助手的css best_in_place

class CompaniesTest < ActionDispatch::IntegrationTest 
    include BestInPlace::TestHelpers 

    def setup 
    @company = companies(:public) 
    end 

    test "should have best in place fields on show" do 
    get company_path(@company) 
    assert_response :success 
    assert_match @company.name, response.body 
    bip_text(@company, :name, "new name") 
    end 
end 

我得到這樣的錯誤

Capybara::ElementNotFound: Unable to find css "#best_in_place_company_1001664029_name" 

我試過bip_text前添加一個睡眠(0.5),看看它是否是一個時間問題,這並沒有改變錯誤。

編輯:

<span data-bip-type="input" 
data-bip-attribute="name" 
data-bip-object="company" 
data-bip-original-content="Lightbulbs Corp." 
data-bip-skip-blur="false" 
data-bip-url="/companies/1001664029" 
data-bip-value="Lightbulbs Corp." 
class="best_in_place" 
id="best_in_place_company_1001664029_name">Lightbulbs Corp.</span> 

下面是測試ENV頁面的CSS元素的模樣。它看起來像是正確的。任何幫助,將不勝感激。

+0

它尋找與best_in_place_company_1001664029_name的ID的項目,但你說的頁面上的元素具有best_in_place_company_47_name的ID在做什麼 - 所以它永遠不會找到那。 @company的ID是什麼? –

+0

這就是爲什麼有(different_company)那裏。測試中的一家公司來自我的設備。在html中的一個是我的開發數據庫中使用我的開發服務器查看的種子。在rails控制檯測試env中,我可以執行Company.find(1001664029),它返回正確的公司,所以錯誤中的id是應該在頁面上找到的。 – mkrinblk

+0

然後,您需要查看page.html,並在測試環境中查看它的實際內容。你在使用database_cleaner嗎?你有它設置爲截斷模式測試使用JS?您是否已將use_transactional_tests/use_transactional_fixtures設置爲false? –

回答

0

我剛剛重讀你的問題,並注意到你正在使用get。這不是一種水豚方法,你不能混合兩種不同的API,並期望事情能夠發揮作用。爲了實現您正在使用水豚它會是這樣的

test "should have best in place fields on show" do 
    visit company_path(@company) 
    assert_text @company.name 
    bip_text(@company, :name, "new name") 
end