cy.wrap () - разница между передачей строки или объекта - PullRequest
0 голосов
/ 28 декабря 2018

После непродолжительной работы с Cypress я заметил странное поведение с cy.wrap ().При переносе строки внутрь перед хуком указанная строка доступна во всех дальнейших тестах, но объект будет доступен только в первом тесте, а в остальных из них будет неопределенный результат.

Я пробовал оборачивать тесты контекстом (), который работал, но излишне забил пользовательский интерфейс дерева тестов кипариса.

Без контекста:

describe('Wrap test', function () {
  before(function () {
    console.log('Before');

    cy.wrap('string').as('string');
    cy.wrap({ object: true }).as('object');
  });

  it('Test 1', function () {
    console.log('Test 1');
    console.log(this.string); // 'string'
    console.log(this.object); // { object: true }
  });

  it('Test 2', function () {
    console.log('Test 2');
    console.log(this.string); // 'string'
    console.log(this.object); // undefined
  });
});

С контекстом:

describe('Wrap test', function () {
  before(function () {
    console.log('Before');

    cy.wrap('string').as('string');
    cy.wrap({ object: true }).as('object');
  });

  context('Context', function () {
    it('Test 1', function () {
      console.log('Test 1');
      console.log(this.string); // 'string'
      console.log(this.object); // { object: true }
    });

    it('Test 2', function () {
      console.log('Test 2');
      console.log(this.string); // 'string'
      console.log(this.object); // { object: true }
    });
  })
});

Я хотел бы смоделировать объект перед хуком, а затем использовать его в нескольких тестах.Я думал о преобразовании указанного объекта в формат JSON, так как он будет доступен для всех тестов.Будем рады услышать мнения более опытных людей о представленном сценарии.

1 Ответ

0 голосов
/ 29 декабря 2018

Оказывается, что очистка контекста между тестами на самом деле является преднамеренным поведением Cypress, как описано в документах здесь .

Когда вы переносите свои отдельные тестовые случаи в другой набор тестов (describe/ context), он не очистит контекст (как вы видите) для этого набора, если контекст был создан на уровень выше - это тоже намеренно.

Тот факт, что онтолько очищает примитивы , а не объекты , однако это ошибка, и я создал отчет об ошибке для этого: контекст mocha очищен между тестами только для примитивов .

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