Ang*_*ian 5 rspec ruby-on-rails
B.rb看起来像:
module A
module B
def enabled? xxx
xxx == 'a'
end
def disabled? xxx
xxx != 'a'
end
end
end
Run Code Online (Sandbox Code Playgroud)
另一个C.rb如:
module YYY
class C
include A::B
def a_method
if(enabled? xxx)
return 'a'
return 'b'
end
end
Run Code Online (Sandbox Code Playgroud)
现在我想编写单元测试来测试a_method函数,
describe :a_method do
it 'returns a' do
###how to sub enabled? method to make it return true....
end
end
Run Code Online (Sandbox Code Playgroud)
启用?是模型中的实例方法,我试过了
A::B.stub.any_instance(:enabled).and_return true
Run Code Online (Sandbox Code Playgroud)
它不起作用。
有人可以帮助我吗?
小智 5
您打错了。您A::B是一个模块,所以您没有实例,实例是类。您也忘记了问号。
尝试使用以下方法存根模块的静态方法:
A::B.stub(:enabled?).and_return true
Run Code Online (Sandbox Code Playgroud)
在第二个示例(如果需要)中,请尝试以下操作:
YYY::C.any_instance.stub(:a_method).and_return something
Run Code Online (Sandbox Code Playgroud)
但是我认为您正在尝试enabled?在类中对方法进行存根YYY::C,因此您需要使用以下方法:
YYY::C.any_instance.stub(:enabled?).and_return true
Run Code Online (Sandbox Code Playgroud)
然后在调用:a_method时,enabled?将返回true。
| 归档时间: |
|
| 查看次数: |
4714 次 |
| 最近记录: |