試圖測試一個模塊。它在rails控制檯中執行時有效,但在寫入測試時不起作用。假設以下幾點:如何測試Rails模型關聯
爲MyModel
一個)的has_many:my_other_model
MyOtherModel
一個)屬於:my_model
模塊例如:
module MyModule
def self.doit
mine = MyModel.first
mine.my_other_models.create!(attribute: 'Me')
end
end
現在測試:
require 'test_helper'
class MyModuleTest < ActiveSupport::TestCase
test "should work" do
assert MyModule.doit
end
end
返回:
NoMethodError: NoMethodError: undefined method `my_other_models' for nil:NilClass
現在嘗試在控制檯同樣的事情:
rails c
MyModule.doit
作品就好了。但爲什麼不作爲測試?
我認爲這個問題是你不創建測試前'MyModel'記錄,所以'.first'返回nil,我不知道你怎麼做,在MINITEST,但我想你谷歌可以檢查。 –
謝謝穆罕默德!是的,問題是我的測試數據庫沒有記錄在dev db中。 –