Ruby on rails 新手:构建或保存模型测试困难

Ruby on rails 新手:构建或保存模型测试困难,ruby-on-rails,rspec,Ruby On Rails,Rspec,我有一个所有权模型,带有开始日期和结束日期。我在app/models/owner.rb中定义了一个方法,如下所示: def电流? self.start\u date.present?&&self.end_date.nil? 结束 我在spec/models/ownership\u spec.rb 描述所有权 let(:product){FactoryGirl.create(:product)} let(:user){FactoryGirl.create(:user)} 在{@ownership

我有一个
所有权
模型,带有
开始日期
结束日期
。我在app/models/owner.rb中定义了一个方法,如下所示:

def电流?
self.start\u date.present?&&self.end_date.nil?
结束
我在spec/models/ownership\u spec.rb

描述所有权
let(:product){FactoryGirl.create(:product)}
let(:user){FactoryGirl.create(:user)}
在{@ownerships=user.ownerships.build(产品:产品)}之前
主体{@ownership}
描述“当拥有和给予日期为零”时
在做之前
@所有权。保存
@所有权。更新属性(开始日期:零,结束日期:零,同意:真)
结束
它{应该是有效的}
@所有权。当前?应为\u false
描述“那么产品是自有的”吗
在{@ownership.update_属性之前(开始日期:1.day.ago)}
它{应该是有效的}
@所有权。当前?应为真
结束
结束
结束
结束
但rspec不喜欢它,并返回:

nil:NilClass(NoMethodError)的未定义方法'current'


你知道为什么我的
@所有权
对rspec来说似乎是零吗?

你应该把所有断言/检查放到
it
块中。不要像这样开空头支票

it { should be_valid }
@ownership.current?.should be_false # incorrect scope here
改为这样做:

it { should be_valid }
it { subject.current?.should be_false }
或者最好这样做:

it { should be_valid }
its(:current?) { should be_false }

谢谢你快速有效的回答!