Как пропустить support / index.js для определенных spec-файлов в Cypress - PullRequest
0 голосов
/ 11 января 2019

Можно ли пропустить функцию beforeEach в моем файле поддержки Cypress index.js для определенного файла спецификации (access.spec.js)?

index.js

// This example support/index.js is processed and
// loaded automatically before your test files.

beforeEach(function () {
  cy.request('POST', 'https://exampleURL.com', {
    email: 'email',
    password: 'password'
  }).then((response) => {
    cy.setCookie('accessToken', response.body.AccessToken);
  });

  cy.setCookie('email', 'email');
  cy.setCookie('environment', '3');
  cy.setCookie('name', 'name');
}

access.spec.js

it("it should send user back to login screen when AccessToken is missing", () => {
  // Code here
});

1 Ответ

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

С традиционной точки зрения, блок beforeEach в support / index.js должен иметь только код, который применяется к всем спецификациям тестирования. Если логика относится только к одним тестам, а не к другим, ее не следует помещать в support / index.js .

Попытка переопределить, как Cypress намеревается использовать support / index.js работает против фреймворка, а не с ним.

Впоследствии альтернативой дублированию этой логики beforeEach во всех тестах, в которых она требуется, будет создание Пользовательской команды , например:

Cypress.Commands.add('login', () => {
  cy.request('POST', 'https://exampleURL.com', {
    email: 'email',
    password: 'password'
  }).then((response) => {
    cy.setCookie('accessToken', response.body.AccessToken);
  });

  cy.setCookie('email', 'email');
  cy.setCookie('environment', '3');
  cy.setCookie('name', 'name');
})

... а затем, в рамках спецификаций, требующих этой функциональности, вы можете получить более простой блок beforeEach, например:

beforeEach(function() {
  cy.login();
});

Однако, учитывая, что ваш тест access.spec.js связан с отсутствующим accessToken, вы не будете использовать блок beforeEach в этом конкретном тесте. Вместо этого скопируйте код входа в этот тест и используйте cy.route вместо cy.request (что соответствует вашей фактической конечной точке), чтобы вы могли заглушить ответ, который не возвращает accessToken.

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