1 回答
TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
您的 httpClient 有一個(gè)“目標(biāo)”網(wǎng)址,可以說(shuō)是 localhost:1234。你想要測(cè)試的是你的重試代碼,所以你不應(yīng)該觸摸 httpClient 本身(因?yàn)樗皇悄愕慕M件,你不應(yīng)該也需要測(cè)試它。)
因此,手頭的問(wèn)題是當(dāng)您的 localhost:1234 響應(yīng)有問(wèn)題時(shí),您希望看到將運(yùn)行的重試邏輯(不是您的實(shí)現(xiàn)..如果它沒(méi)有以正確的 conf 運(yùn)行是他們的問(wèn)題)有效..唯一的事情你所要做的就是模擬“l(fā)ocalhost:1234”!
這個(gè)工具h(yuǎn)ttp://wiremock.org/是執(zhí)行此操作的完美選擇。您可以為您的目標(biāo) url 創(chuàng)建存根,并根據(jù)您喜歡的幾乎任何內(nèi)容給出一系列響應(yīng)。
您的代碼在調(diào)用之前應(yīng)該看起來(lái)像uploadFile
stubFor(post(urlEqualTo("/hash"))
.willReturn(aResponse()
.withStatus(200)
.withBody(externalResponse)));
打電話后uploadFile
并驗(yàn)證步驟以驗(yàn)證到達(dá)模擬端點(diǎn)的模擬請(qǐng)求
Assert.assert* //... whatever you want to assert in your handlers / code / resposnes
verify(postRequestedFor(urlEqualTo("/hash")));
添加回答
舉報(bào)
