如何指定空有多个活动记录关系rspec

时间:2017-11-20 12:33:55

标签: rspec

let(:user) { FactoryGirl.build(:user, categories: categories) }

context 'when the user has no categories' do
  let(:categories) { [] }
  it { expect(user.category_list).to eq '' }
end

在上面的代码中,我试图在测试中明确记录,类别在这里是一个空关系,或者在另一个词中,user.categories将返回[]但是如果我指定[],它似乎不能正常工作我在用户模型中使用each函数

它表示每个类别模型的未定义方法

category_list看起来像这样

def category_list
  # some code
  categories.each do |category|
    # some codee
  end
end

在用户模型中

1 个答案:

答案 0 :(得分:0)

不幸的是,这里没有足够的信息来回答这个问题,但这里有一个命中列表:

  • category_list中每次通话的次数是多少?我最好的猜测是,方法每个调用有2个,一个在categories.each上,一个在内部变量category上,这将为#{user.inspect}返回错误“NoMethodError:undefined method` each' “
  • 检查您与类别的关系
  • 如果没有,则应返回[]
  • 此外,由于混合AR的方法有时会返回非数组,因此我建议使用be_empty匹配器来断言该集合为空。