2013-04-16 60 views
1

在测试模型字段的有效性之前,我尝试在主题中设置实例变量。我需要设置此变量,因为验证是有条件的(仅用于某些类型的用户)。所以,我有这样的事情:Shoulda和RSpec之前

context "as a user" do 

    before(:each) do 
     subject = Organization.new 
     subject.editor = "user" 
    end 

    it { subject.should validate_presence_of :name } 

    end 

但预期它不工作:

Failure/Error: it { subject.should validate_presence_of :description } 
RuntimeError: 
    Organization#editor attr is not set 

我错过了什么?

回答

3

subject你之前的块是局部变量。它看起来像你打算使用an explicit subject

context "as a user" do 
    subject { Organization.new } 

    before(:each) do 
    subject.editor = "user" 
    end 

    # usually, you don't explicitly name the subject in an `it` like this 
    it { should validate_presence_of :name } 

end 
相关问题