![](/img/trans.png)
[英]Microservice calling another microservice in same kubernetes cluster
[英]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.