如何在我的项目中模拟自己编写的模块内的函数?
假设有该模块和该函数
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
块中。显然这是行不通的。我真是太蠢了。 - Torbjörn:should
语法的should_receive
被弃用,而没有明确启用该语法。请使用新的:expect
语法或明确启用:should
。 - reducing activity