我有一个我想要的课程。该类包括一个我不想加载的模块。应用程序代码如下:
class Foo
include Bar
...
end
在我的孤立规范中,我只需要foo.rb
,但在这样做时,Ruby会尝试包含Bar
模块常量,此时此类尚未定义。
Rspec提供了一个名为stub_const
的方法,但它似乎打算在示例中使用,因此在示例后的清理时可以再次定义常量。
如果在示例之外调用stub_const
,这显然不起作用。
解决此问题的最佳方法是什么?理想情况下,解决方案
答案 0 :(得分:0)
如何事先定义一个空(或存根)Bar模块呢?
使用foo.rb:
class Foo
include Bar
def to_s
"Foo"
end
end
这个foo_test.rb确实有效:
module Bar
end
require 'foo'
f = Foo.new
空模块需要在foo的要求之前出现,但是你可以在测试套件的特定文件中设置它(特别是如果你必须重复使用它)。