Кипарис, используя JSON приспособление в теле? - PullRequest
1 голос
/ 04 февраля 2020

Таким образом, основываясь на документации Cypress-запроса: https://docs.cypress.io/api/commands/request.html

Похоже, я должен быть в состоянии довольно легко отправить запрос POST с телом JSON. Вот что я попробовал:

cy.fixture('test_create').as('create_test')
cy.request({
  method: 'POST',
  url: 'http://localhost:8080/widgets',
  body: '@create_test',
  headers: {
    'Authorization': this.token,
    'Content-Type': 'application/json;charset=UTF-8'
  }
})

Однако, когда я смотрю на "команды", которые отправляет Cypress, он отправляет тело буквально Body: @create_test

Разве невозможно использовать фиксатор в теле запроса POST? Я подтвердил, что прибор загружается правильно. Я также подтвердил, что это работает, когда я вставляю весь JSON внутрь опции body .... но это становится ужасно быстро с большими JSON телами.

1 Ответ

1 голос
/ 04 февраля 2020

Вы получаете литерал, потому что в форме cy.request(options) options является простым JS объектом и, к сожалению, Cypress не анализирует его для интерпретации псевдонима.

Форма запроса cy.request(method, url, body), вероятно, разрешает псевдоним для параметра body, поскольку cy.route() разрешает его ref: Доступ к данным прибора

например, следующее должно быть допустимым, но не позволяет устанавливать заголовки

cy.fixture('test_create').as('create_test')
cy.request('POST', 'http://localhost:8080/widgets', '@create_test');

Итак, вы можете использовать then()

cy.fixture('test_create').then(myFixture => {

  cy.request({
    method: 'POST',
    url: 'http://localhost:8080/widgets',
    body: myFixture,
    headers: {
      'Authorization': this.token,
      'Content-Type': 'application/json;charset=UTF-8'
    }
  })
});

или

cy.fixture('test_create').as('create_test');

...  // some other code between

cy.get('@create_test').then(myFixture => {  // retrieve the fixture from alias

  cy.request({
    method: 'POST',
    url: 'http://localhost:8080/widgets',
    body: myFixture,
    headers: {
      'Authorization': this.token,
      'Content-Type': 'application/json;charset=UTF-8'
    }
  })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...