我一直在嘗試使用 Cypress 的攔截方法攔截服務器請求。我注意到 Cypress 可以攔截通過前端/瀏覽器發出的請求,但是,如果我直接向后端服務器發出請求,則攔截方法不起作用。
讓我澄清一下我的意思:
- 一件事是攔截前端/瀏覽器向后端服務器發出的請求。
- 另一件事是攔截不使用瀏覽器但直接呼叫后端端點的呼叫。
例如:我可以使用前端介面創建一個用戶,或者我可以創建一個直接呼叫后端端點的用戶(直接呼叫服務器)。
回到我的問題。有沒有辦法攔截直接對后端端點進行的呼叫?
這是我迄今為止嘗試過的:
- 我寫了一個正則運算式來攔截
api/v0/customers - 然后我向
http://locahost:5440/api/v0/customers(這是服務器的 URL)發出請求 - 最后,我等待請求發生
使用 Cypress 攔截方法的超時請求
cy.intercept(/^\/api\/v0\/customers\/$/).as('createCustomer');
cy.request(createCustomer(customerData, headers));
cy.wait('@createCustomer').then(({ status, body }) => {
const customerId = body.customer_id;
console.log(body);
expect(status).equal(201);
});
問題是:出現超時錯誤。
- 正如您在圖片中看到的,我正在
http://locahost:5440向服務器 URL發出請求。注意:我確保服務器已啟動并正在運行。 - 正則運算式也是正確的,它將匹配端點
http://locahost:5440/api/v0/customers
我懷疑攔截僅適用于通過瀏覽器發出的請求。這個說法正確嗎?我在 Cypress 檔案中的任何地方都找不到這個答案。有沒有辦法讓我攔截直接向服務器發出的呼叫(不使用瀏覽器)?
uj5u.com熱心網友回復:
您不必攔截您使用 cypress 明確發出的請求,只需用于.then獲取回應,如下所示:
cy.request(createCustomer(customerData, headers)).then((response) => {
const customerId = response.body.customer_id;
console.log(response.body);
expect(response.status).equal(201);
});
參考:https : //docs.cypress.io/api/commands/request#Yields
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/395336.html
