我真的不知道如何标题,但我的问题如下:
shared_examples "something" do
context "for something" do
fields.each do |field|
it "should have #{field} field" do
#Check something
end
end
end
end
describe Clazz do
it_behaves_like "something" do
let(:fields) {%w{something something2}}
end
end
由于变量是在fields.each
范围内引入的,而不是it
,因此context
部分的执行过程会爆炸。
所以我的问题是如何将it_behaves_like中的变量引入上下文范围?或者我应该使用别的东西。
答案 0 :(得分:2)
不了解shared_examples
,但如果使用shared_examples_for
,则可以将参数传递给块,如下所示:
shared_examples_for "something" do |fields|
context "for something" do
fields.each do |field|
it "should have #{field} field" do
#Check something
end
end
end
end
describe Clazz do
it_behaves_like "something", %w{something something2}
end
答案 1 :(得分:2)
shared_examples已经创建了一个新的上下文,所以我认为最干净的方式就像shioyama的例子没有额外的上下文:
shared_examples_for "something" do |fields|
fields.each do |field|
it "should have #{field} field" do
# specify something
end
end
end
describe Clazz do
it_behaves_like "something", %w{something something2}
end
答案 2 :(得分:0)
在我知道之前,我们会在每个it
块之前评估,而不是context
或describe
。
describe "something" do
let(:fields) { %w{something something2} }
it "should have all fields" do
fields.each do |field|
end
end
end