我正在使用RSpec和JRuby测试Java类。
如何在RSpec测试中将导入的Java类中的super调用存根?
例如:
我有2个Java类:
public class A{
public String foo() {
return "bar";
}
}
public class B extends A
public String foo() {
// B code
return super.foo();
}
}
我只是试图测试B.foo中的代码,而不是使用JRuby测试A.foo中的代码。如何在RSpec测试中对超类方法的调用进行存根?
rspec测试:
java_import Java::B
describe B do
it "should not call A.foo" do
# some code to stub out A.foo
b = B.new
b.foo.should_not == "bar"
end
end
我已经尝试在B类中包含一个带有新foo方法的模块,希望它首先命中模块方法但是B仍然调用A。插入模块技术在Ruby中工作但不适用于JRuby和导入的Java类
还有什么其他想法可以使用超类方法来使我的RSpec测试通过?
答案 0 :(得分:1)
我认为你不能,而且似乎不合逻辑。 super.foo()的foo()方法调用是它实现的一部分 - 原则上,它可能是正确行为的必要条件。
也许您想要单独测试的功能需要分成单独的方法,并从foo()和测试中调用?