我正在尝试编写一个规范的例子数量,即'it'应该......“do”是在运行时确定的。我尝试将'it'方法放在我自己的方法中,以便我可以多次调用它:
def new_method(test)
it "#{test} should... " do
end
end
但是,'it'方法在当前的Spec :: Example :: ExampleGroup :: Subclass实例中不可用。
答案 0 :(得分:5)
为避免代码重复,有时我会这样做:
describe SomeOjbect do
%w(a b c d e f g).each do |val|
it "should have a value of #{val}" do
# ...
end
end
end
这将在规范中创建7个示例。我想如果你真的死定了使用方法,你可以这样做:
def new_method(grp, test)
grp.instance_eval do
it "#{test} should..." do
# ...
end
end
end
describe SomeObject do
new_method(self, "a")
new_method(self, "b")
new_method(self, "c")
new_method(self, "d")
# ...
end
在这里传递self
,这是describe
块的范围,而instance_eval
可让您执行代码,就像您在该块中一样,因此it
方法可用。