Как делают меня методы записи, которые вставляют rspec примеры?

В наборе rspec спецификаций единицы направляющих я делаю что-то как:

describe Foo do
  [:bar, :baz].each do |a|
    it "should have many #{a}" do
      Foo.should have_many(a)
    end
  end
end

Для более чистого кода я сделал бы что-то как:

describe Foo do
  spec_has_many Foo, :bar, :baz
end

Таким образом, как я пишу вспомогательный метод как spec_has_many() для вставки DSL кодируют как rspec's it() метод? Если бы это было для обычного метода экземпляра, то я сделал бы что-то как:

def spec_has_many(model, *args)
  args.each do |a|
    define_method("it_should_have_many_#{a}") do
      model.should have_many(a)
    end
  end
end

Каков был бы эквивалент для определения rspec примеры?

6
задан Mori 20 October 2010 в 03:03
поделиться