Я тестирую классы Java с RSpec и JRuby.Как я могу отключить вызов супер в импортированном классе Java в 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 по-прежнему делает вызов А. технике модуль вставки работает в Ruby, но не с JRuby и импортированными Java-классами.
Любые другие идеи, чтобы заглушить метод суперкласса, чтобы пройти тест RSpec?
Я согласен, что рефакторинг для тестирования может быть самым простым решением. Иногда реорганизация сложнее, особенно если я использую библиотеку поставщика. Я надеюсь, что я все еще могу сделать это в JRuby, поскольку это вариант в Ruby. Приятно иметь еще один инструмент для тестирования. –