【发布时间】:2010-02-27 19:09:09
【问题描述】:
我正在使用 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();
}
}
我只是想用 JRuby 测试 B.foo 中的代码,而不是 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 测试通过?
【问题讨论】:
标签: java testing jruby stub super