无法使用FactoryGirl和RSpec创建实例

时间:2017-07-14 00:21:28

标签: ruby-on-rails ruby rspec factory-bot

我正在使用FactoryGirl4.8.0,RSpec3.5.0,Rails5.0.2和Ruby2.4.1。

我写了这样的规范:

foo_languages_translators.rb

FactoryGirl.define do
  factory :foo_languages_translator, class: 'Foo::LanguagesTranslator' do
    translator nil
    language nil
  end
end

foo_languages_translator_spec.rb

require 'rails_helper'

RSpec.describe JobOfferTranslationLanguagable, type: :model do
  describe '#hoge' do
     let!(:foo_languages_translator) do
       create(
         :foo_languages_translator,
         translator_id: 1,
         foo_language_id: 1
       )
     end
     ... ...
   end
end

然后我收到了错误:

NameError:
       uninitialized constant Foo::LanguagesTranslator::FooLanguage

create(
         :foo_languages_translator,

部分。

我已经尝试了很多事情要解决它,但我不知道出了什么问题。 如果您对此问题有任何提示,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

试试这个:

let!(:foo_languages_translator) do
  FactoryGirl.create(
    :foo_languages_translator,
    translator_id: 1,
    foo_language_id: 1
  )
end

答案 1 :(得分:0)

好吧,而不是

let!(:foo_languages_translator) do
  create(
    :foo_languages_translator,
    translator_id: 1,
    foo_language_id: 1
  )
end

尝试使用以下属性创建对象

let!(:foo_languages_translator) do
  create(
    :foo_languages_translator,
    translator_id: 1,
    language_id: 1
  )
end

请注意,我没有使用language_id代替foo_languag_id。 在您的工厂中,您使用了关联language而不是foo_language

如果没有解决您的问题,请告诉我