[英]How to read a response in Cypress?
我正在嘗試使用 Cypress 12.3 為 web 應用程序編寫 E2E 測試。 在旅程的某個部分,應用程序向端點“ api/v2/accountApplication/getApplicationInfo?uuid=xxxxxxx ”發出GET請求。 此請求的響應包括一個名為“ abChoice.welcome ”的字段,其值為“a”或“b”。 此值用於我的 Vue 應用程序中的 A/B 測試。 響應的結構如下:
{
"resultStatus": true,
"errorCode": 0,
"errorMessage": null,
"resultData": {
"abChoice": {
"welcome": "a"
}
}
}
我正在嘗試編寫一個測試來檢查此請求的響應並根據“abChoice.welcome”的值做出不同的斷言。 我試圖使用cy.intercept命令檢查響應,但它沒有按預期工作。 我還嘗試為請求創建一個別名並使用cy.wait(@myAliasName) ,但 Cypress 拋出一個錯誤並表示從未發出請求,即使我可以在日志中看到該請求。
describe('A/B testing', () => {
it('shows A or B pages', () => {
cy.intercept('GET', '**/accountApplication/getApplicationInfo', req => {
const { body } = req
cy.log(body)
if (body.resultData.abChoice.wlecome === 'a') {
cy.log('A')
// assert something
} else {
cy.log('B')
// assert something
}
})
})
})
日志顯示如下,所以肯定是在發出請求。 (我已經刪除了敏感信息)
(xhr)GET 200 /api/v2/xxxx/accountApplication/getApplicationInfo?uuid=xxxx
您的cy.wait()
不成功並且您的驗證從未運行的原因是因為您的攔截請求 url 從未匹配過。 這是因為您的 url 不包含查詢參數。
假設查詢參數uuid
與您的攔截無關,您可以執行類似以下操作,將通配符添加到現有 url 的末尾:
cy.intercept('GET', '**/accountApplication/getApplicationInfo*', (req) => { ... });
當 .network 調用的參數帶有 '/' 時,您可能會遇到與此處相同的問題 Cypress intercept() fails 。
事實上,導致問題的不是“/”,而是參數部分( ?
之后的任何內容),它將被視為 URL 的一部分。
根據參考問題,使用正則表達式或pathname
而不是url
(默認)。
cy.intercept('GET', /\/accountApplication\/getApplicationInfo/, req => {
或者使用路徑名,參數從匹配中排除
cy.intercept({method:'GET', pathname: `**/accountApplication/getApplicationInfo`}, req => {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.