2013-03-18 40 views
2

當我的應用程序創建一個新的導軌和mongoid:Mongoid腳手架測試失敗的燈具

rails new tddapp --skip-active-record 
cd tddapp 
echo "gem 'mongoid'" >> Gemfile 
bundle 
rails g mongoid:config 

,然後生成一個簡單的支架:

rails g scaffold building height:Integer name:String 

創建腳手架和最小的應用程序只運行精細。但腳手架生成的測試失敗:

NoMethodError: undefined method `buildings' for #<BuildingsControllerTest:0x007fa6afbf78d8> 

違規的行顯示了測試控制器無法找到燈具:

@building = buildings(:one) 

的mongoid發生器是不夠好於test/fixtures/buildings.yml創建燈具指示與腳手架的功能測試的整個想法的某種程度的合作。

是否有一些配置設置或我需要更改以獲取功能測試以加載mongoid的燈具?或者是腳手架功能測試預計會失敗,並伴有mongoid? (如果是這樣,爲什麼mongoid打擾夾具文件創建?)

+0

您使用的是測試單元還是rspec? – gylaz 2013-03-21 02:07:24

+0

腳手架測試子類「ActiveSupport :: TestCase」,我相信它是基於測試單元/ minitest。 – Leopd 2013-03-21 22:11:27

回答

3

不是爲了個人促銷,而是因爲我多次陷入這個問題,因爲我認爲它可以幫助很多其他人,所以我創建了mongoid-fixture_set,這在github上可用。

它的工作原理或多或少一樣ActiveRecord::FixtureSet,因爲我移植了大量的代碼,你就必須自己綁它來測試類:

class ActiveSupport::TestCase 
    include Mongoid::FixtureSet::TestHelper 
    self.fixture_path = "#{Rails.root}/test/fixtures" 
end 

同樣的事情由ActiveRecord完成'lib/rails/test_help.rb'中的寶石railties'

+0

你的寶石是否適用於RSpec? – izaban 2015-07-21 15:27:52

+0

@izaban從未測試過,但如果您有興趣,請在github上創建問題。另外,我應該查看代碼並改進它。 – Geoffroy 2015-07-22 09:40:45

0

Mongoid不支持開箱即用的燈具(source)。我建議你放棄裝置並走工廠路線。 factory_girl是一個很好的選擇。