簡體   English   中英

Mocking 提供者測試中的第三方依賴項使用協議

[英]Mocking third party dependencies in the provider tests using pact

目前我已經設置了一個提供者測試,它實際上調用我的提供者並返回一個響應,然后在協議代理中將其與預期的響應主體進行比較。 但是,通過調用我的提供者,它正在運行內部代碼,該代碼對另一個外部端點進行惡意調用以獲取響應,然后它會進行一些映射並將響應返回給協議代理。 有沒有一種方法可以模擬/存根這個第三方響應,所以它實際上並沒有達到第三方端點。

//Inside provider test
it('matches the consumer contract', async () => {
    await new Verifier(opts).verifyProvider();
}, 30000);

//調用第三方然后使用響應

const response = await axiosInstance.post(url, input.body, {
    headers: {
        Authorization: `${input.token}`,
    },
});

我可以開玩笑地嘲笑 axious 嗎?

目前我已經設置了一個提供者測試,它實際上調用我的提供者並返回一個響應,然后在協議代理中將其與預期的響應主體進行比較。

在消費者測試中,Pact Broker 根本不是測試的一部分。 事實上,Pact Broker 根本不做任何測試——它是團隊共享合同、交流正在進行的工作等的協作點。

但是,通過調用我的提供者,它正在運行內部代碼,該代碼對另一個外部端點進行惡意調用以獲取響應,然后它會進行一些映射並將響應返回給協議代理。

同樣,這里沒有 Pact Broker 參與。 與您的代碼進行通信的是 Pact 框架(在消費者方面,它充當假提供者,反之亦然用於提供者測試)。

有沒有一種方法可以模擬/存根這個第三方響應,所以它實際上並沒有到達第三方端點。

正如上面評論中所建議的,您應該 存根這個端點

您應該將 Pact 視為單元測試工具。 嚴格來說,它不是,但這是您需要帶入 Pact 測試的心態。 如果您無法在測試中排除依賴項,則表明可能會發生以下情況之一:

  1. 您正在嘗試“從外部”對其進行測試,即作為黑盒類型測試。 不推薦這樣做。 有關更多信息,請參見有關測試 scope的視頻。
  2. 您的代碼不是很模塊化,因此很難進行單元測試。 您應該重構代碼以使其更易於測試

暫無
暫無

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

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