正确的testing与Rspec“协会”的方式?

我正在尝试testing以下情况:

– >我有一个叫Team的模型,当它由用户创build时它才有意义。 因此,每个Team实例必须与用户相关联。

为了testing,我做了以下几点:

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 

这对你看来是正确的吗? 我只是担心使:用户属性可访问(批量分配)。

我通常使用这种方法:

 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应该可以让你简单地:

 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) }