У меня есть спецификация для объекта, который находится в нескольких уровнях модулей. Примерно так:
describe Foo::Bar::Baz::Quux::Widget do
it "should == another Widget for the same Doohickey" do
doohickey = stub
Foo::Bar::Baz::Quux::Widget.new(doohickey).should == Foo::Bar::Baz::Quux::Widget.new(doohickey)
end
it "should != another Widget for a different Doohickey" do
one_doohickey = stub
another_doohickey = stub
Foo::Bar::Baz::Quux::Widget.new(one_doohickey).should == Foo::Bar::Baz::Quux::Widget.new(another_doohickey)
end
end
Это много повторений, и это выглядит так, будто я использую объект
из какого-то другого пространства имен. Я хотел бы установить контекст спецификации
Foo::Bar::Baz::Quux
. Следующее работает на удивление хорошо:
module Foo::Bar::Baz::Quux
describe Widget do
it "should == another Widget for the same Doohickey" do
doohickey = stub
Widget.new(doohickey).should == Widget.new(doohickey)
end
it "should != another Widget for a different Doohickey" do
one_doohickey = stub
another_doohickey = stub
Widget.new(one_doohickey).should == Widget.new(another_doohickey)
end
end
end
Есть только одна проблема. Так как я в Rails, я в зависимости от
Управление зависимостями ActiveSupport для автозагрузки Foo::Bar::Baz::Quux
модуль. Раньше это случилось, когда я упомянул Foo::Bar::Baz::Quux::Widget
.
Теперь я сам определяю модуль, поэтому настоящее определение модуля в
foo/bar/baz/quux.rb
никогда не загружается.
Как я могу изменить контекст постоянного поиска для моей спецификации без определения
сам модуль?