RSpec和FactoryGirl

时间:2016-12-07 21:59:47

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

我目前正在进行RSpec测试:

    Rspec.describe Some::ServiceClass do 
      args = ['1', '2']
      subject { described_class.new(args) }

      describe '#finder_method' do 
        let(:user_1) { FactorGirl.create(:user) } 

        it 'returns the right number of users' do
          expect(subject.finder_method.count).to eq(1)
        end
      end
    end 

这就是被测试的课程

   module Some

      class Service

        ....
        # other methods used to identify the resource model

        def finder_method 
          resource.all
        end
      end

    end

期望

  • 调用resource.all时,我预计
  • let(:user_1) FactoryGirl.create(:user),在规范测试中,将填充users表中的1行(测试环境)
  • 因此,当评估subject.finder_method时,它将返回一个AR对象。

实际结果

  • 而不是subject.finder_method,它只是在AR对象上调用all,返回#<ActiveRecord::Relation []>

任何人都可以解释为什么会发生这种情况? FactoryGirl创建的user_1在哪里?

1 个答案:

答案 0 :(得分:0)

啊!

let是罪魁祸首......完全忘了被懒惰的评价。我需要睡一觉:(