Я тестирую классы Java с RSpec и JRuby.
Как я могу заглушить вызов super в импортированном классе Java в моем тесте RSpec?
Например:
У меня есть 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, а не код в A.foo с JRuby. Как я могу заглушить вызов метода суперкласса в моем тесте 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
Я попытался включить модуль с новым методом foo в класс B, надеясь, что он сначала вызовет метод модуля, но B по-прежнему вызывает A. Техника вставки модуля работает в Ruby, но не с JRuby и импортированными классами Java.
Любые другие идеи, чтобы заглушить метод суперкласса, чтобы мой тест RSpec прошел?