Я пытаюсь создать насмешливую структуру в java, которая соответствует конкретным требованиям проекта.
Сценарий таков, у меня есть метод
public String returnRandom(){
String randomString = this.randomGenerator.returnRandom()
}
randomGenerator является зависимостью этого класса и внедряется в объект только во время выполнения. Означает, что это будет нуль, если объект будет создан без инфраструктуры внедрения зависимостей.
Во время теста изоляции я хочу, чтобы замена присваивалась оператору
this.randomGenerator.returnRandom();
с методом, который возвращает случайное значение, например "Helloworld".
Для того же я пытался использовать javassist.expr.FieldAccess, с помощью которого я могу заменить поле на отсутствие операции, а вызов метода можно изменить с помощью javassist.expr.MethodCall.
Я не могу понять, как заменить поле фиктивным или нет операции. Возможно ли это с помощью java-помощника или мне следует использовать более низкоуровневую манипуляцию с байт-кодом, например asm?
Примечание. Я мог бы добиться замены вызова метода, который не исходит из поля, с помощью javassist.expr.MethodCall. Например, если приведенный выше пример
public String returnRandom(){
String randomString = returnRandom();
}
Я могу заменить как
public String returnRandom(){
String randomString = MockedString.getSampleRandom();
}