Запустите перед всеми тестами - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь использовать cy.writeFile, чтобы записать свои файлы фикстуры в API. Мне нужно, чтобы эти файлы фиксации были сгенерированы до запуска любых тестов Cypress, так как все тесты будут использовать эти файлы фикстур. Мне нужно, чтобы это было выполнено только один раз, до запуска любых тестов, а не перед каждым тестом.

Я пытался добавить функцию before в файл /cypress/support/index.js, но это не таксоздавать файлы фикстур при запуске «кипариса».

import './commands'

before(function() {
   // runs once before all tests in the block
    const apiUrl = 'http://localhost:8080/api/';
    const fixturesPath = 'cypress/fixtures/';
    const fixtureExtension = '.json';

    let routePath = 'locations';
    cy.request(`${apiUrl}${routePath}`).then((response) => {
      cy.writeFile(`${fixturesPath}${path}${fixtureExtension}`, response.body);
    });
 });

Разве это не должно быть перед запуском ловушки перед выполнением любого из моих тестов с использованием запуска "кипарис"?

1 Ответ

0 голосов
/ 08 ноября 2019

Да, он должен быть запущен до любого из ваших тестов.

Устройство не создано, потому что запрос не выполнен. Например, это связано с несколькими причинами: API не готов во время работы Cypress, или он требует аутентификации ... лучше проверить это дважды.

Я сделал пример здесь. Перед запуском cypress yarn cy: run необходимо убедиться, что и сервер api ( start yarn: mock ), и веб-сервер ( start yarn ) готовы.


Еще одно замечание: функция before () в support / index.js не запускается один раз, потому что включена в каждый набор тестов Допустим, у вас есть 3 тестовых файла, затем он выполняется 3 раза.

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