用Rspec测试“关联”的正确方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (6)

我试图测试以下场景:

- >我有一个名为Team的模型,它在用户创建时才有意义。因此,每个Team实例都必须与用户相关。

为了测试,我做了以下事情:

describe Team do

...

  it "should be associated with a user" do
    no_user_team = Team.new(:user => nil)
    no_user_team.should_not be_valid
  end

...

end

这迫使我将团队模型更改为:

class Team < ActiveRecord::Base
  # Setup accessible (or protected) attributes for your model
  attr_accessible :name, :user

  validates_presence_of :name
  validates_presence_of :user

  belongs_to :user
end

这对你来说是否正确?我只是担心将:user属性设为可访问(质量分配)。

提问于
用户回答回答于

我通常使用这种方法:

describe User do
  it "should have many teams" do
    t = User.reflect_on_association(:teams)
    expect(t.macro).to eq(:has_many)
  end
end

更好的解决方案是使用gem shoulda,它允许您简单地:

describe Team do
  it { should belong_to(:user) }
end
用户回答回答于
  it { Idea.reflect_on_association(:person).macro.should  eq(:belongs_to) }
  it { Idea.reflect_on_association(:company).macro.should eq(:belongs_to) }
  it { Idea.reflect_on_association(:votes).macro.should   eq(:has_many) }

扫码关注云+社区

领取腾讯云代金券