В тесте ниже, блоки Панели и Baz содержат идентичные спецификации.
Не принимая во внимание, почему такое повторение было необходимо во-первых, я задаюсь вопросом, как можно было высушить это.
Я пытался превратить блоки в объекты и назвать их под Панелью и Baz, но возможно потому что я не разобрался в объемах, я не смог заставить ее работать.
describe Foo do
describe Bar do
before(:each) do
prepare
end
it "should do something" do
true
end
it "should do something else" do
true
end
end
describe Baz do
before(:each) do
prepare_something_else
end
it "should do something" do
true
end
it "should do something else" do
true
end
end
end
вы можете создать макросы. вот несколько руководств:
http://www.benmabey.com/2008/06/08/writing-macros-in-rspec/
http://intridea.com/2009/5/15/make -it-so-with-rspec-macros? blog = company
http://railscasts.com/episodes/157-rspec-matchers-macros