Это хорошая практика, чтобы поместить утверждение в блок afterEach? - PullRequest
2 голосов
/ 08 мая 2019

Окружающая среда: транспортир, жасмин, машинопись

У меня есть несколько тестов, которые имеют разные настройки и одно и то же утверждение. Является ли хорошей практикой вводить разные шаги в каждом it внутри describe и утверждении expect в блоке afterEach?

Пример: Форма содержит phoneNumberField и submitBtn;

Тест 1: введите слишком короткий номер в phoneNumberField => Ожидайте submitBtn для отключения.

Тест 2: введите текст в phoneNumberField => Ожидайте submitBtn, который будет отключен Пример кода:

describe('Invalid phone number => submitBtn disabled', () => {

    afterEach(() => {
        expect(submitBtn.isEnabled()).toBeFalsy();
    });

    it('Too short number input', () => {
        phoneNumberField.sendKeys('012');
    });

    it('Text input', () => {
        phoneNumberField.sendKeys('asdf');
    });
});

1 Ответ

2 голосов
/ 08 мая 2019

Честно говоря, я удивлен, что это работает таким образом ... Я собирался сказать "нет, это не очень хорошая практика ...", но я не нашел никаких недостатков в том, чтобы делать это таким образом после игры длянесколько минут с ним.

Но все же я бы не стал этого делать, потому что если вы поместите expect() в it() блоки, то легко увидеть последовательность логики в ваших тестах (например, открыть страницу-> ожидайте smtng; нажмите кнопку-> ожидайте smtng; и т. д.)

Но вы можете просто реализовать это, немного использовать и посмотреть, хорошо ли это работает для вас

PS только для визуализациипочему я думаю, что это не страшная идея, как может показаться: код ниже

beforeAll(async () => {expect(true).toBe(false)});

it("1", async () => {
});

it("2", async () => {
});

it("3", async () => {
});

даст следующий вывод

Suite: UCare - Provider Search - 'Places' tab
    ✗ 1 (0.002 sec)
      - Expected true to be false.
          at UserContext.beforeAll (/Users/spleshakov/Documents/ui-automation/protractor/custom_implementation/test.spec.js:11:38)
          at /Users/spleshakov/Documents/ui-automation/node_modules/jasminewd2/index.js:112:25
          at new Promise (<anonymous>)
          at SimpleScheduler.promise (/Users/spleshakov/Documents/ui-automation/node_modules/selenium-webdriver/lib/promise.js:2242:12)
          at schedulerExecute (/Users/spleshakov/Documents/ui-automation/node_modules/jasminewd2/index.js:95:18)
          at promise (/Users/spleshakov/Documents/ui-automation/node_modules/selenium-webdriver/lib/promise.js:2232:22)
          at new Promise (<anonymous>)

    ✗ 2 (1 sec)
      - Expected true to be false.
          at UserContext.beforeAll (/Users/spleshakov/Documents/ui-automation/protractor/custom_implementation/test.spec.js:11:38)
          at /Users/spleshakov/Documents/ui-automation/node_modules/jasminewd2/index.js:112:25
          at new Promise (<anonymous>)
          at SimpleScheduler.promise (/Users/spleshakov/Documents/ui-automation/node_modules/selenium-webdriver/lib/promise.js:2242:12)
          at schedulerExecute (/Users/spleshakov/Documents/ui-automation/node_modules/jasminewd2/index.js:95:18)
          at promise (/Users/spleshakov/Documents/ui-automation/node_modules/selenium-webdriver/lib/promise.js:2232:22)
          at new Promise (<anonymous>)

    ✗ 3 (0.907 sec)
      - Expected true to be false.
          at UserContext.beforeAll (/Users/spleshakov/Documents/ui-automation/protractor/custom_implementation/test.spec.js:11:38)
          at /Users/spleshakov/Documents/ui-automation/node_modules/jasminewd2/index.js:112:25
          at new Promise (<anonymous>)
          at SimpleScheduler.promise (/Users/spleshakov/Documents/ui-automation/node_modules/selenium-webdriver/lib/promise.js:2242:12)
          at schedulerExecute (/Users/spleshakov/Documents/ui-automation/node_modules/jasminewd2/index.js:95:18)
          at promise (/Users/spleshakov/Documents/ui-automation/node_modules/selenium-webdriver/lib/promise.js:2232:22)
          at new Promise (<anonymous>)

Как видно, отчет печатается нормальногде каждый сбой показан как отдельный сбой it() контрольный пример

...