助手规范中的rspec Let()行为

时间:2013-01-06 11:03:35

标签: ruby-on-rails rspec tdd rspec-rails

我的application_helper_spec.rb

中有以下内容
shared_examples_for "some shared process" do

    it "displays the value defined by Let" do
        puts object.inspect # This should output the value defined by Let
    end

end

describe ApplicationHelper do

    describe "a_helper_methond" do

        describe "some behaviour" do
            let(:object) { "foo" }
            puts object.inspect # This should output the value defined by Let
            it_should_behave_like "some shared process"
        end

    end

end

但是,当我运行这个时,我在两个put上都会遇到两个错误:

undefined local variable or method `object' for #<Class:0x007f951a3a7b20> (NameError)

为什么呢?我在我的模型中有完全相同的代码,请求规格运行正常,但在帮助程序规范中没有。

2 个答案:

答案 0 :(得分:4)

let调用在您的规范将被执行的上下文中定义一个方法。但是,您的puts声明超出了该范围。您需要将其包含在it块中。

it 'print debug output' do
  puts object.inspect
end

答案 1 :(得分:0)

我还通过将let命令放在it_behaves_like块

中进一步改进了这一点