Нельзя издеваться над этим поведением.Потому что вы инициируете свой объект внутри кода.Вы должны ввести зависимости через contrutor или как-то еще.По сути, вам нужно сделать внедрение зависимостей .
Некоторые фиктивные фреймворки (например, moq из c #) способны моделировать только интерфейсные или абстрактные типы, поэтому вам нужно внедрить свои зависимости как интерфейс, этосамый распространенный способ в целом.Некоторые фреймворки, такие как mockito / powermock, также позволяют имитировать конкретные типы (powermock также позволяет имитировать приватные методы, насколько я помню).
Измените код так, чтобы он работал следующим образом:
class YourClass {
private IApiMetricsClient apiMetricClient;
public YourClass(IApiMetricsClient apiMetricClient) {
this.apiMetricClient = apiMetricClient;
}
public [returnType] yourMethod() {
List<JSONObject> metrics = this.apiMetricClient.listApiMetrics(new ApiIdList(apiIds));
// other logics and return data or whatever
}
}