赛普拉斯:如何转发要在标头上使用的响应正文JSON

时间:2019-01-24 11:17:21

标签: node.js cypress

我要使用Cypress.io测试REST API,但要使用链接请求,它要像这样工作,第一个API上的JSON响应正文将在下一个API头中进行授权

我已经尝试通过使用cypress命令并在console.log上进行打印,但是似乎它没有在日志中捕获,或者是否有任何线索,或者我只是在使用另一个命令,例如cy.route?

Cypress.Commands.add("session", () => {
    return cy.request({
      method: 'POST',
      url: '/auth/',
      headers: {
        'Content-Type': 'application/json',
      },
      body: {
        "client_secret" : ""+config.clientSecret_staging,
        "username": ""+config.email_staging,
        "password": ""+config.password_staging
      }
    }).then(response => {
      const target = (response.body)
    })
  })

  it('GET /capture', () => {
    cy.session().then(abc =>{
    cy.request({
      method: 'GET',
      url: '/capture/'+target 
    })
      })
    })

目标是从target = (response.body)捕获JSON数组的解析

1 个答案:

答案 0 :(得分:0)

您有两个选择:

  • 按原样保留代码,请注意
.then(response => {
  const target = (response.body)
})

代码未返回任何内容,因此cy.session().then(abc =>{ ...代码获得了整个responseabc是第一个.then的响应)

  • 将代码更改为
.then(response => {
  const target = (response.body)
  return target // I added this return
})

,那么您的abc参数将等于response.body而不是response

这是因为,如果您不从可链接呼叫中返回主题,则默认主题将传递给下一个.then函数。

让我知道它是否满足您的问题。

p.s。欢迎