簡體   English   中英

如何閱讀賽普拉斯的回應?

[英]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.

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