基本上,我有一堆共享的例子。我认为这会有效,但我正在传递的stack level too deep
变量。
shared_examples 'Foo' do
# top level shared example passes values
# to a lower-level shared example.
it_behaves_like 'Bar' do
let(:variable) { variable }
end
it_behaves_like 'Baz'
end
shared_examples 'Bar' do
it { expect(variable).to veq('value')
end
规范:
describe SomeClass do
it_behaves_like 'Foo' do
let(:variable) { 'value' }
end
end
我认为共享示例保留了自己的上下文,为什么会导致问题?
答案 0 :(得分:1)
您的代码中有递归:
let(:variable) { variable }
将一遍又一遍地召唤自己
规范将自动传递其变量,因此这将起作用:
shared_examples 'Foo' do
it_behaves_like 'Bar'
it_behaves_like 'Baz'
end
shared_examples 'Bar' do
it { expect(variable).to eq('value') }
end
和
describe SomeClass do
let(:variable) { 'value' }
it_behaves_like 'Foo'
end