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