簡體   English   中英

如果調用另一個微服務,如何為微服務編寫集成測試

[英]How to write Integration test for a microservice if it calling another microservice

我正在為我的功能編寫集成測試(此處稱為 IT)。 在我的要求中,我需要調用另一個服務來更新數據。這些服務不能在本地運行,所以不能運行 Postman。 所以只有我被允許使用它。

前任。 我有 2 個服務 serviceA 和 serviceB,在微服務 serviceA 中,我正在編寫代碼我的功能邏輯並更新 DB(serviceB 的另一個模式)中的一些數據,我需要調用 serviceB。 我已經在 A 中編寫了代碼,現在我正在打電話

public void addUToG(UGT ugt, String accessToken)  {
    try {
        String url = ServiceB_Baseurl + "/" + id + "/works";
        HttpResponse response = httpUtil.putRequest(url, accessToken,
                ContentType.APPLICATION_JSON.toString(),
                mapper.writeValueAsString(ugt));
        if (response != null && response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
            logger.warn("Failed ");
        }
    }
    catch(Exception e) {
        logger.warn("Exception ", e);
    }
}

在這里,我調用了其他服務,但我需要使用 IT 對其進行測試,並且我無法運行 postman,因為這些服務無法在本地運行。 所以我不知道我能做些什么來測試它?任何建議都會很有幫助。

TIA

我無法運行 postman 因為這些服務無法在本地運行

這基本上意味着您沒有調用其他服務的選項,因為它沒有運行。

但同時,如果你想在當前服務中測試你的邏輯,那么你肯定需要模擬這個 API 調用。

究竟如何模擬它取決於您的實現,但我建議首先概述Mockito框架。

根據提供的代碼片段,您可以模擬httpUtil的實例。 在這種情況下, httpUtil.putRequest(...)將不會調用 serviceB 的真正 API 而是使用您提供的響應進行測試。

如果您不進行實際的 e2e 測試,您可以使用模擬 http 服務器(如wiremock 和存根響應)將其包含在集成測試中。

為了測試您的被測微服務 ( SUT ),您將使用測試替身來模擬相關組件。 您可以使用API mocking工具之一來模擬/模擬微服務 B,如下圖所示。

例如,您可以使用此 Wikipedia 頁面上列出的工具之一:

有關測試微服務時的更多詳細信息和選項,我建議查看“ 測試微服務:12 種有用技術概述”。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM