2013-04-16 61 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 
相關問題