1

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

  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

我错过了什么?

4

1 回答 1

3

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
于 2013-04-16T14:26:50.620 回答