[英]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 測試的心態。 如果您無法在測試中排除依賴項,則表明可能會發生以下情況之一:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.