У меня есть класс, у которого есть public static void
метод. Этот метод использует метод другого класса, и этот метод принимает два аргумента и возвращает List
значений.
public class FirstClass {
public static void doSomething() {
List<String> values = SecondClass.getOrderedValuesBy(anotherMethod());
// action
}
private static String anotherMethod() {
// some action
return ""; // something that depends on action above.
}
}
public class SecondClass {
public static List<String> getOrderedValuesBy(String by) {
List<String> values = new ArrayList<>();
values.addAll(getOrderedValuesBy(by, true));
return values;
}
private static List<String> getOrderedValuesBy(String by, boolean ordered) {
// some action
}
}
Затем при написании некоторых тестов для этого я использую метод mockStatic
на SecondClass
и инициализируйте FirstClass
как новый объект, как показано ниже.
def "someTest"() {
given:
mockStatic(SecondClass)
FirstClass firstClass = new FirstClass()
when(SecondClass.getOrderedValuesBy(anyString()).thenAnswer {['some values'])}
}
он не возвращает эти значения, которые я хотел бы получить, потому что они нужны мне в каком-то частном методе, который используется вызывается в doSomething()
пустом методе и в качестве параметра этот метод принимает список values
. У кого-нибудь есть идеи, что я делаю неправильно, и как я могу манипулировать значениями, возвращаемыми этим методом, вызываемым в методе void в FirstClass