B看起来像:
module A
module B
def enabled? xxx
xxx == 'a'
end
def disabled? xxx
xxx != 'a'
end
end
end
字符串
另一个C.rb像:
module YYY
class C
include A::B
def a_method
if(enabled? xxx)
return 'a'
return 'b'
end
end
型
现在我想写单元测试来测试一个_method函数
describe :a_method do
it 'returns a' do
###how to sub enabled? method to make it return true....
end
end
型
enabled?是模型中的示例方法,我试过了
A::B.stub.any_instance(:enabled).and_return true
型
不能用。
谁能帮帮我????
3条答案
按热度按时间piwo6bdm1#
你打错了。你的
A::B
是一个模块,所以你没有示例,示例是类的。你也忘了问号。尝试这样做来stub你的模块静态方法:
字符串
在第二个例子中(如果你需要),试试这个:
型
但是我认为你试图在类
YYY::C
中存根enabled?
方法,所以你需要使用这个:型
然后当调用:a_method时,
enabled?
将返回true。xmakbtuz2#
您应该能够在要创建示例的类上存根方法。例如
字符串
或类似的...
b91juud33#
这是一个老问题,但在搜索
rspec rails stub a method
时仍然会弹出。尽管
allow_any_instance_of
和expect_any_instance_of
都可以在这种情况下工作,但由于多种原因,这被认为是有问题的代码。我在实现@Taryn的答案时遇到了困难,但我的问题是如何声明测试示例。
字符串
我需要小心地确保测试类示例声明是在
let
块中完成的,这样才能使这种类型的存根成功。但是allow_any_instance_of
和expect_any_instance_of
都允许那些失败的测试通过。