Пытается проверить модуль. Он работает, когда выполняется в консоли 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' возвращает ноль, я не знаю, как вы делаете это в MiniTest, но я думаю, что вы может google проверить это. –
Спасибо Мохаммад! Да, проблема заключалась в том, что у моего тестового db нет записи, которая была в dev db. –