将局部变量作为参数传递给RSpec shared_examples始终为Nil

时间:2017-09-26 18:43:10

标签: ruby-on-rails ruby rspec

我有这样的规格:

shared_examples_for 'using the id' do |the_id|
    it 'should do something with the id' do
        # do something with the_id
    end
end

id = nil
describe 'a spec' do
    it 'should retrieve id' do
        id = getId
        expect(id).to eq(12345)
    end
    include_examples 'using the id', id
end

问题是,一旦规范运行并通过include_examples进入共享示例,id始终为nil。我可以验证在规范本身的第一个块中是否设置了id,这似乎是不正确的交接。

我不能使用it_behaves_like,因为我们正在使用rspec进行旅程测试,所以订单很重要。我看到的每个例子都说这应该有用,我没有想法。

1 个答案:

答案 0 :(得分:0)

id块的定义移到it块之外,以便在共享示例中访问它,或在致电getId时使用include_examples,因为{{1} }和it具有不同的执行范围。

describe