0
我有一個Rails 4應用程序與一系列的關聯:職位have_many評論,評論have_one假設。在控制檯完美工廠女孩軌道4協會在控制檯中工作,但不通過黃瓜
FactoryGirl.define do
factory :review do
association :post, factory: :post
...fields...
factory :review_with_assumption do
after(:create) do |review|
FactoryGirl.create(:assumption, assumable: review)
end
end
end
end
以下工作:我已經建立了工廠,假設生成點評
post = FactoryGirl.create(:post)
rev = FactoryGirl.create(:review_with_assumption, post: post)
rev.assumption.valid?
=> true
post.reviews.first.assumption.valid?
=> true
而且所有的領域都正是因爲他們在我廠定義設置 - 爲例如,假設每一個包括6.「得分」然而,當我使用以下步驟黃瓜,創建了審查,但它的假設是不:
Given(/^the post "(.*?)"'s review "(.*?)" has an assumption$/) do |arg1, arg2|
post = FactoryGirl.create(:post, name: arg1)
rev = FactoryGirl.create(:review_with_assumption, name: arg2, post: post)
end
Then(/^I should see the "(.*?)" review assumption's score$/) do |arg2|
rev = Review.find_by_name(arg2)
page.should have_content rev.assumption.score
end
所以我得到LOO錯誤ks如:
And I should see the "Test Rev" review assumption's score
undefined method `score' for nil:NilClass (NoMethodError)
如果我手動輸入所有內容,它正試圖呈現的頁面內容在瀏覽器中完美呈現。爲什麼它不能通過工廠女孩和黃瓜?
我很抱歉 - 這些變量名稱令人困惑,並得到糾正。它實際上是用來創建Review記錄的'arg2'名稱。 – thusson
@ thusson,這很好:)但是,仍然是,參數問題。如果這是您的確切代碼,則您在第二個塊中使用'arg1'作爲rev = Review.find_by_name(arg1)'。 '然後'是另一種情況,arg1不住在這裏,所以你不能使用它,當然rev是無效的。解決的辦法是將'arg1'定義爲一個實例變量'@ arg1',以便稍後在此測試的其他塊中訪問它。 –
是的,你是對的 - 再次糾正,更多道歉:)但問題是測試發現審查很好,但它沒有與它相關的假設。感謝您的幫助,對於snafus感到抱歉。 – thusson