Cypress: заставить HTTP-запрос работать с Promise - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь сделать HTTP-запрос на моем сервере и проверить результат после.В настоящее время у меня есть результат в response объекте метода postCar.Но результат теста then() null.

В чем проблема?

postCar($access_token, $body) {
        return new Cypress.Promise((resolve) => {
            let bodyString = '';
            cy.request({
                method: 'POST',
                url: '/applications',
                form: true,
                failOnStatusCode: false,
                body: $body,
                headers: {
                    Content: 'application/json',
                    Authorization: 'Bearer ' + $access_token
                }
            })
            .then((response) => {
                cy.log('Response = ' + JSON.stringify(response));
                resolve(response);
            });
        });
    }

Мой тест:

it('Car Spec : create a car', function () {

    let accessToken = Cypress.env('ACCESS_TOKEN')
    var correct_body = getValidBody();

    cy.postCar(accessToken, correct_body).then(function(res) {
       cy.log('Application Spec : postCar response :' + JSON.stringify(res));
    });

});

1 Ответ

1 голос
/ 12 апреля 2019

Вы не должны заключать команду в Promise. Пользовательские команды Cypress не предназначены для возврата обещаний. Попробуйте только это:

function postCar ($access_token, $body) {

    let bodyString = ''

    cy.request({
      method: 'POST',
      url: '/applications',
      form: true,
      failOnStatusCode: false,
      body: $body,
      headers: {
        Content: 'application/json',
        Authorization: `Bearer ${$access_token}`,
      },
    })
    .then((response) => {
      cy.log(`Response = ${JSON.stringify(response)}`)
      return response
    })
}
...