我有一個頁面,當我真正使用它時渲染了很多東西,但在水豚中沒有渲染任何東西。在水豚測試中,視圖中的實例變量保持爲空
控制器是這樣的:
class IdeasController < ApplicationController
def index
@ideas = Idea.all
end
頁的相關位是這樣的:
<div class="accordion" id="accordion">
Ideas length is <%= @ideas.length %>.
<% @ideas.each do |idea| %>
<div class="accordion-group">
<div class="accordion-heading">
<%= link_to(idea.title, '#idea_' + idea.id.to_s, class: "accordion-toggle", data: {toggle: "collapse", parent: "#accordion"} ) %>
</div>
<%= div_for(idea, class: "accordion-body collapse") do %>
<div class="accordion-inner">
<%= render :partial => "idea", locals: { :idea => idea } %>
</div>
<% end %>
</div>
<% end %>
</div>
當發展的角度看,這精美的作品,我得到的東西負載的視圖(我的數據庫充滿了模擬數據)。但是當我彈出它使用save_and_open_page
中間測試時,它是完全空的,並且說「想法長度爲0」。
我做了rake db:test:clone
和rake db:test:prepare
,但nada - 保持空白。
你能幫我弄清楚爲什麼?有沒有辦法窺視測試數據庫,看看有沒有什麼東西?
編輯:受到評論的啓發,我意識到麻煩一定是測試環境每次都會刷新所有東西,顯然沒有任何東西。在一個(顯然是誤導)試圖解決這個問題,我所做的:
before do
create(:idea)
visit root_path
click_link "Log In"
end
注意create(:idea)
線,這是應該引起我的想法工廠,並堅持一個模擬想法變成分貝(工廠正常工作與其他測試)。
現在這一頁說:
內部服務器錯誤
的SQLite3 :: BusyException:數據庫被鎖定:INSERT INTO 「用戶」( 「created_at」, 「電子郵件」, 「姓名」, 「供應商」 ,「uid」,「updated_at」)VALUES(?,?,?,?,?,?)
這是超出奇怪的。 Rails s
正在後臺運行。
按照要求通過評議,全規格如下:
require 'spec_helper'
describe "Idea page", js: true do
subject { page }
before do
create(:idea)
visit root_path
click_link "Log In"
end
context "Single idea" do
before do
save_and_open_page
#click_link('Eligendi sint quod quia alias sed sit vitae repellendus.')
end
it { should have_selector('a',text:'Claim') }
end
end
您是否在訪問頁面之前創建Idea對象?在你的測試中的一個點上,你可以做'p Idea.all'或'p Idea.count'來獲得輸出到控制檯的信息。如果你使用的是寶石,你也可以使用Pry。您可以運行'rails c test'以進入測試環境的Rails控制檯。 – MrDanA
你用'database_cleaner'創業板? – dimuch
在你的規範中:'把idea.all'看看你是否有任何想法。此外,如果您將規範代碼添加到此問題中,這將有所幫助。 – ipd