Издевательство над частными объектами в классах Ballerina для модульного тестирования

В настоящее время я пишу модульные тесты для функций внутри класса ConsentManagementServiceImpl. Однако запуск этого класса предполагает создание объекта уровня DAO. Я хочу высмеивать частный конечный объект (consentManagementDAO) и высмеивать его методы всякий раз, когда они вызываются. Как мне это сделать?

Вот мой код

      public isolated client class ConsentManagementImpl {
    private final dao:ConsentManagementDAO consentManagementDAO;

    public isolated function init(string host, string username, string password, string database, int port) returns error? {
        self.consentManagementDAO = check new(host, username, password, database, port);
       }

    public isolated function handle consentAmendment(string consenId, string payload, string orgId) returns error?
        check self.consentManagementDAO->updateConsent(consentId, orgId, payload);
    }
}

1 ответ

Поскольку это находится в пределах клиентского класса, мы не можем издеваться над ним как есть. В текущей реализации мы можем только издеваться надConsentManagementServiceImplиспользуя издевательство над объектом. Но таким образом мы не сможем протестировать реализацию внутри этого класса. Чтобы выполнить это требование, мы можем переместитьconsentManagementDAOиз класса (как конечный клиент уровня модуля), а затем используйте подход, упомянутый в https://ballerina.io/learn/test-ballerina-code/test-services-and-clients/#mock-final-clients , чтобы издеваться над этим конечным клиентом.

Другие вопросы по тегам