Чтобы избежать дублирования кода, иногда я делаю что-то вроде этого:
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
.