Как издеваться, когда я создаю объект, как показано ниже - PullRequest
0 голосов
/ 26 ноября 2018

Как смоделировать listAPiMetrics, когда мой код выглядит следующим образом

List<JSONObject> metrics = new ApiMetricsClient().listApiMetrics(new ApiIdList(apiIds));

1 Ответ

0 голосов
/ 26 ноября 2018

Нельзя издеваться над этим поведением.Потому что вы инициируете свой объект внутри кода.Вы должны ввести зависимости через 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

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...