2

抱歉,我不知道如何更好地表达标题,但这是我测试的大致思路:

describe Model do
  let(:model) { FactoryGirl.create(:model) }
  subject { model }

  it { should be_valid }

  model.array_attribute.each do |attribute|
    context "description" do
      specify { attribute.should == 1 }
    end
  end
end

问题是在该行model.array_attribute.each do |attribute|,我得到一个未定义局部变量或方法的错误model。我知道它let(:model)正在工作,因为验证(除其他外)工作正常。我怀疑这个问题是因为它在任何实际测试之外被调用(即specifyit等)。

关于如何让它发挥作用的任何想法?

4

2 回答 2

1

model这里是未知的,因为它只在 specs 块上下文中评估。

执行以下操作:

describe Model do
  def model
    FactoryGirl.create(:model)
  end

  subject { model }

  it { should be_valid }

  model.array_attribute.each do |attribute|
    context "description" do
      specify { attribute.should == 1 }
    end
  end
end

顺便说一句,这里读得很好

于 2012-05-15T22:02:20.940 回答
1

我用以下代码解决了这个问题:

describe Model do
  let(:model) { FactoryGirl.create(:model) }
  subject { model }

  it { should be_valid }

  it "description" do
    model.array_attribute.each do |attribute|
      attribute.should == 1
    end
  end
end
于 2012-05-15T22:04:53.743 回答