2013-04-16 4 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