我已經獲得了一些模塊級別的對象的規範。事情是這樣的:如何更改RSpec描述塊的模塊上下文?
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
真正的定義。
如何更改我的規範的常量查找上下文沒有定義 該模塊本身?
呀,'described_class'是我們已經使用過,但我發現很難讀書。我希望調用該對象來查看同一名稱空間中的任何其他對象將調用它的方式。好吧。我會在接受之前看看是否有人能夠勝過這個答案。 – Peeja 2012-02-02 22:15:35
另一件事,如果你想在同一個命名空間describe_class中引用其他類也是不好的。也在尋找更好的解決方案。 – PhilT 2013-02-08 11:24:50