【发布时间】:2012-02-02 17:49:34
【问题描述】:
我有一个对象的规范,它位于多个模块级别。像这样的:
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 永远不会加载。
如何在不定义的情况下更改我的规范的常量查找上下文 我自己的模块?
【问题讨论】:
标签: ruby rspec activesupport