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

如何指定空有多个活动记录关系rspec,rspec,Rspec,在上面的代码中,我试图在测试中显式地记录categories在这里是一个空关系,或者换句话说user.categories将返回[],但是如果我指定[],它似乎不能很好地与用户模型中的每个函数配合使用 它表示每个类别模型都有未定义的方法 类别列表如下所示 let(:user) { FactoryGirl.build(:user, categories: categories) } context 'when the user has no categories' do let(:categ

在上面的代码中,我试图在测试中显式地记录categories在这里是一个空关系,或者换句话说user.categories将返回[],但是如果我指定[],它似乎不能很好地与用户模型中的每个函数配合使用

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

类别列表如下所示

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

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

  • 类别列表中每个呼叫有多少个?我最好的猜测是该方法有两个each调用,一个在
    类别上。每个
    和一个在内部变量
    类别上,这将返回错误“NoMethodError:undefined method`each',for#{user.inspect}”
  • 检查您与类别的关系
  • 如果没有,则应返回
    []
  • 此外,由于混合AR的方法有时会返回非数组,我建议使用
    be\u empty
    matcher,它将断言集合为空

添加标记ruby和rails以获得更多视图。
def category_list
  # some code
  categories.each do |category|
    # some codee
  end
end