如何在我的项目中模拟自写模块的模块功能?如何模拟Ruby模块的功能?
所指定的模块和功能
module ModuleA::ModuleB
def self.my_function(arg)
end
end
被称为像
ModuleA::ModuleB::my_function(with_args)
我应该如何嘲笑它时,它就是我写的规格为函数内部使用?
加倍它(obj = double("ModuleA::ModuleB")
)是没有意义的,我作为函数被调用的模块上,而不是一个对象。
我试过把它存根(ModuleA::ModuleB.stub(:my_function).with(arg).and_return(something)
)。显然,它没有工作。这里没有定义stub
。
然后我用should_receive
试了一下。再次NoMethodError
。
嘲笑模块及其功能的首选方式是什么?
这基本上,我的尝试。感谢您的总结。然而,我的问题是,我把'should_receive'放在'before:all'块中。显然这是行不通的。我多么愚蠢。 – 2012-07-06 06:41:40
@Torbjoern,噢。到过那里。很高兴你能解决问题。 – 2012-07-06 12:45:37
在当前的rspec(3.6)中,它提供了使用rspec-mocks旧':should'语法中的'should_receive'而不明确地启用语法的方法,不推荐使用新的':expect'语法或显式启用':should'。 “ – 2017-06-06 10:03:40