具有动态 body 的 Cypress 网络请求

Cypress network request with dynamic body

我想创建 cypress 自定义方法,它将使用参数作为动态请求 body(以避免代码重复,因为 url、方法和 headers 始终相同) 像这样:

var bodyValue = 
`abc
 abc
 abc`

 var bodyValue2 = 
`bbb
 bbb
 bbb`

Cypress.Commands.add("myRequest", () => {


  cy.request({

    url: "xxx",
    method: 'PUT',

    headers: {
      authorization: cookies
    },

    body: bodyValue

    
  })

})

总是以

结尾
The response we got was:
Status: 409 - Conflict
Headers: {
  xxx
  xxx
  xxx
}
Body: {
  "message": "Setting Deleted"
}

如果我从我的变量中获取值并将其粘贴到 body:

有什么好笑的
cy.request({

    url: "xxx",
    method: 'PUT',

    headers: {
      authorization: cookies
    },

    body: {
     abc
     abc
     abc
}

})

一直有效

我也试过了

cy.request({

    url: "xxx",
    method: 'PUT',

    headers: {
      authorization: cookies
    },

    body: {bodyValue}

})

这很奇怪,因为之后的 body 不是

     abc
     abc
     abc

但是

{"bodyValue":
   abc
   abc
   abc
}

这可能是原因。我不知道如何实现我的目标。

我的实际 body值:

{
    "revision": "23554252352542343",
          "activePerspective": ".Beta",
          "perspectives": [
            {
              "type": ".Beta",
              "activeLayout": "1x1",
              "layouts": [
                {
                  "caption": "1x1",
                  "canonicalName": "1x1",
                  "icon": {
                    "source": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"><path fill=\"none\" stroke=\"#fff\" class=\"eveInteractiveSvgStroke\"/></svg>"
                  },
                  "placement": {
                    "center": {
                      "config_mode": ".Default",
                      "visualization": "object-table",
                      "configuration": "punkt"
                    }
                  }
                }
              ]
            }
          ]  
       }

您可能想将 bodyValue 设置为一个对象(在传入之前)

const bodyValue = { abc, abc, abc }

然后在请求中,按照第一次尝试

body: bodyValue

这很难说,因为即使“粘贴”的工作示例也有语法错误 - 每个 属性.

之间应该有逗号

@Fody 这与您的回答没有太大区别。

var body = {abc, abc, abc}

和里面 cy.request

  url: "xxx",
method: 'PUT',

headers: {
  authorization: cookies
},

body

成功了。