Regex: Отрицательное сопоставление для javascript string ^ (?! \\ [функционал \\]). + $ Files не удается исключить [функционал] - PullRequest
0 голосов
/ 25 января 2020

В пакете. json У меня есть 2 команды сценария:

    "test:unit": "jest --watch --testNamePattern='^(?!\\[functional\\]).+$'",
    "test:functional": "jest --watch --testNamePattern='\\[functional\\]'",

копирование ^(?!\\[functional\\]).+$ в https://regex101.com/, оно не соответствует тестовой строке ниже в аргументе 1 из describe()

  describe("[functional] live tests", () => {

При изменении на ([functional]).+$ шаблон соответствует. Я должен удалить пару \ на каждом конце, чтобы удалить экранирование для .json файлов (я думаю).

Вот что я вижу при запуске npm run test:unit в моем проекте root:

// the functional test runs (not desired)
$ npm run test:unit

 functions/src/classes/__tests__/Functional.test.ts:30:47 - error TS2339: Property 'submit' does not exist on type 'Element'.

    30         await emailForm.evaluate(form => form.submit());
                                                     ~~~~~~

 RUNS  ...s/__tests__/Functional.test.ts
Test Suites: 1 failed, 1 skipped, 3 passed, 4 of 5 total
Tests:       2 skipped, 16 passed, 18 total
Snapshots:   0 total
Time:        8.965s, estimated 27s
Ran all test suites with tests matching "^(?!\[functional\]).+$".

Active Filters: test name /^(?!\[functional\]).+$/

Функциональные тесты не построены, что объясняет синтаксическую ошибку, здесь это не важно. Ключевой вопрос, почему тесты не были пропущены.

Я полагаю, что проблема связана с регулярным отрицательным соответствием. Положительное совпадение без ! соответствует только тестам, которые имеют или вложены в блок описания с [functional]

$ npm run test:functional

Test Suites: 1 failed, 4 skipped, 1 of 5 total
Active Filters: test name /\[functional\]/

Кто-нибудь знает, почему шаблон отрицательного регулярного выражения дает сбой во время npm run test:unit?

1 Ответ

0 голосов
/ 27 января 2020

Вместо исправления регулярного выражения я изменил флаг в скрипте модульного тестирования на игнорирование, затем скопировал соответствующий шаблон для [функционала]:

"test:unit": "jest --watch --testIgnorePattern='\\[functional\\]'",
"test:functional": "jest --watch --testNamePattern='\\[functional\\]'",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...