2016-11-03 21 views
0

我創建一個Ruby on Rails的web應用程序,並有index.html.erb文件包含下面的代碼我的意見之一:Ruby代碼在我html.erb文件黃瓜測試期間不執行

<div class="container" id="quickTickets"> 
    <% Game.all.each do |game| %> 
     <h2> 
      <%= link_to game.name, game_tickets_path(game.id), :id => "gameid_"+game.id.to_s %> 
     </h2> 
    <%end%> 
</div> 

的代碼工作正常,當我在瀏覽器中查看它,並顯示一個標題爲每個鏈接到一個單獨的頁面遊戲。但是,當我運行Cucumber/Capybara測試來模擬點擊其中一個標題時,它會失敗。

測試失敗,因爲上面的Ruby代碼塊在運行Cucumber測試時未執行,所以頁面最終包含空的<div>

例如,當我做出print page.html打電話來檢查我的黃瓜測試上運行的HTML,它顯示以下內容:

<div class="container" id="quickTickets"> 
</div> 

我已經花了幾個小時試圖找到任何文件或以前的錯誤像這樣,但還沒有找到解決方案。有任何想法嗎?

回答

0

由於容器的div是在輸出的代碼被評估。可能發生的事情是,你實際上沒有顯示Game對象。這可能是因爲你還沒有創建測試任何遊戲對象,或者是因爲你使用的是JS能夠驅動器和不使用交易(https://github.com/jnicklas/capybara#transactions-and-database-setup

+0

我把它加入遊戲的工作還沒有配置你的測試在我的Cucumber測試中直接對我的db。如果我理解正確,您必須在Cucumber測試本身中顯式創建Game對象,而不是讓測試與db交互? – user1874182

+0

@ user1874182測試一般都是在自己的環境與自己的數據庫實例中運行,而數據庫實例每次測試之間清除(或如果使用事務處理模式非JS能夠司機跑這麼沒什麼每居然被提交),以便測試彼此隔離。因此,每個測試都需要在數據庫中創建需要測試的任何測試對象。 –