RSpec – 测试之外的未初始化变量
对不起,我不知道如何更好地说出标题,但这里是我测试的一般概念:
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)
正在运行,因为validation(以及其他function)工作正常。 我怀疑这个问题是因为它在任何实际测试之外被调用(即specify
, it
等)。
有关如何使其工作的任何想法?
这里的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
顺便说一句, 这里有一个很好的阅读 。
我用以下代码解决了这个问题:
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