Cypress: как переслать тело ответа JSON для использования в заголовках - PullRequest
0 голосов
/ 24 января 2019

Я собираюсь протестировать REST API с помощью Cypress.io, но, используя цепочечный запрос, он хочет работать следующим образом, тело ответа JSON для первого API будет использоваться в следующих заголовках 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 
    })
      })
    })

цель состоит в том, чтобы захватить анализ массива JSON из target = (response.body)

1 Ответ

0 голосов
/ 28 января 2019

У вас есть два варианта:

  • оставьте код как есть, помните, что
.then(response => {
  const target = (response.body)
})
Код

ничего не возвращает, поэтому код cy.session().then(abc =>{ ... получает целое response (abc - ответ первого .then)

  • изменить код на
.then(response => {
  const target = (response.body)
  return target // I added this return
})

и тогда ваш abc параметр будет равен response.body, а не response

Это потому, что если вы не вернете тему из цепочки вызовов, то тема по умолчанию будет передана следующей .then функции.

Дайте мне знать, если это удовлетворит вашу проблему.

p.s. Добро пожаловать 10

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...