Есть ли ловушка (или эквивалентное решение) для «прямо в конце теста» для WebdriverIO? - PullRequest
1 голос
/ 26 марта 2020

Я немного обхожу круги по этому вопросу - и я не уверен, что это возможно - надеюсь, что кто-то может доказать, что я не прав!

В WebdriverIO у меня есть набор тестов, что-то вроде (значительно здесь все упрощено!):

describe ('My suite', function () {
  it ('Is the first test', function () {
     expect(1).to.equal(2);
  });
  it ('Is the second test', function () {
     expect(2).to.equal(2);
  });
});

Я хотел бы, чтобы в конце каждого из двух моих тестов был вызван какой-то хук, но с кодом, который включал бы дополнительный «общий для всех тестов» в конце «утверждение, и как таковое может повлиять на результат теста - следовательно, почему« afterTest »не годится. Очевидно, что я могу просто повторить код или определить функцию и вызвать ее в каждом тесте, но кто-нибудь может предложить способ сделать это как-то как ловушку, так что нет необходимости фактически включать в нее вызов в конце каждого теста - просто автомат c, или подразумеваемый вызов?

Спасибо!

1 Ответ

0 голосов
/ 26 марта 2020

Это действительно возможно ✅. Пожалуйста, ознакомьтесь с кодом ниже. Требуйте тестовый файл, содержащий блок it (), и удалите его из кэша до того, как начнет выполняться следующий фактический блок it (). Я приложил скриншот выполнения.

spe c. js

describe('Basic checks for internet app', () => {

  let resolved

  it('should have the right title', async () => {
    await browser.url('https://webdriver.io');
    const title = await browser.getTitle();
    assert.strictEqual(title, 'WebdriverIO · Next-gen WebDriver test framework for Node.js');
    require('./test');
    resolved = require.resolve('./test');
    delete require.cache[resolved];
  })



  it('should assert the wrong right title', async () => {
    await browser.url('https://webdriver.io');
    const title = await browser.getTitle();
    return assert.strictEqual(title, 'Next-gen WebDriver test framework for Node.js');
    require('./test');
    resolved = require.resolve('./test');
    delete require.cache[resolved];
  })


})

тест. js

import assert from 'assert';

    assert.equal(2, 2)

enter image description here

(ИЛИ)

Если вы чтобы это был отдельный тест, выполните следующие действия:

spe c. js

describe('Basic checks for internet app', () => {

  let resolved

  it('should have the right title', async () => {
    await browser.url('https://webdriver.io');
    const title = await browser.getTitle();
    return assert.strictEqual(title, 'WebdriverIO · Next-gen WebDriver test framework for Node.js');
  })

  require('./test');
  resolved = require.resolve('./test');
  delete require.cache[resolved];

  it('should assert the wrong right title', async () => {
    await browser.url('https://webdriver.io');
    const title = await browser.getTitle();
    return assert.strictEqual(title, 'Next-gen WebDriver test framework for Node.js');
  })

  require('./test');
  resolved = require.resolve('./test');
  delete require.cache[resolved];


})

тест. js

import assert from 'assert';

it('should be executed', () => {

    assert.equal(2, 2)

})

enter image description here

...