试图测试一个模块。它在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中。 –