Я пытаюсь использовать jMockit, чтобы заглушить вызов netscape.javascript.JSObject, который, к сожалению, является абстрактным классом с несколькими собственными методами, оба из которых плохо работают с jMockit. Есть ли способ заглушить это либо с помощью jMockit, либо с помощью простой java (я бы предпочел не вводить новую библиотеку, если это возможно)? Код, который я пытаюсь внедрить, выглядит примерно так (не спрашивайте):
JSObject win = JSObject.getWindow(this);
String someVal = (String) win.call("foo", new String[] {""});
К сожалению, я не могу изменить рассматриваемый код (еще раз, не спрашивайте), поэтому единственный способ, которым я могу провести какое-либо модульное тестирование, - это выяснить, как заглушить или иным образом исключить вызовы JSОбъект. Моя текущая фиктивная реализация возвращает новый экземпляр самого себя для вызова getWindow и возвращает постоянную строку для вызова call, но, конечно, во время выполнения она не работает, жалуясь на
ошибка переопределения класса: попытка изменить модификаторы метода
что из моего исследования, которое я обнаружил, означает, что он пытается издеваться над собственным методом.
Изменить: из-за целевой платформы мне нужно использовать JDK 1.5 для сборки/тестирования, поэтому любое решение должно быть жизнеспособным на 1.5.