2015-02-25 4 views
83

Я могу проверить несколько файлов с помощью Jest, но я не могу понять, как протестировать один файл.Как проверить один файл с помощью Jest?

у меня есть:

  • Run npm install jest-cli --save-dev
  • Обновлено package.json: `{... "скрипты": { "тест": "Шутка"} ...}
  • Написано ряд тесты.

Выполнение npm test работает должным образом (в настоящее время он выполняет 14 тестов).

Как проверить один файл, например. тест app/foo/__tests__/bar.spec.js?

Я попытался запустить npm test app/foo/__tests__/bar.spec.js (от корня проекта), но я получаю следующее сообщение об ошибке:

npm ERR! Error: ENOENT, open '<path to project>/node_modules/app/foo/__tests__/bar.spec.js/package.json' 

Благодарности

ответ

52

Если npm test работы, это означает, что шуткой установлен в глобальном масштабе. Чтобы выполнить конкретный тест, вам нужно будет использовать команду jest - npm test не будет работать.

Таким образом, вы можете запустить шутку непосредственно jest bar.spec.js

Примечания: Вам не нужны вводить полный путь теста: аргумент становится регулярным выражением, таким образом, она должна только быть частью полного пути.

Примечание 2.0: Если вы использовали npm install -g jest установить шутку глобально, изменить его как npm install -g jest-cli

+1

К сожалению, это не работает для меня. Запуск 'jest bar.spec.js' дает' jest: command not found'. Я подтвердил, что Jest установлен ('npm list -g jest' показывает' jest @ 0.1.37'). FWIW, когда я запускаю с использованием 'npm test', он использует' jest-cli'. – Musket

+3

Да, 'jest-cli' является правильным модулем, установите его глобально' npm install -g jest-cli'. 'jest' в npm есть ... [что-то еще] (https://www.npmjs.com/package/jest) – ncuillery

+0

Спасибо. Установка jest-cli во всем мире позволила мне запустить jest bar.spec.js'. – Musket

118

Все, что вам нужно сделать, это изменить Магическое колдовство:

npm test -- SomeTestFileToRun 

Автономный -- является * Никс магия для обозначения конца опций, что означает (для NPM), что каждый после этого передается в управляемую команду, в данном случае jest. Как и в сторону, вы можете пошутить заметки об использовании, говоря

npm test -- --help 

Во всяком случае, повторяя

npm test -- Foo 

проходит тесты в имени файла (FooBar.js). Следует отметить, однако, что:

  • Jest рассматривает имя, как чувствителен к регистру, поэтому, если вы используете регистронезависимом, но случай сохраняющих файловой системы (например, Windows, NTFS), вы можете столкнуться что кажется странным.

  • Jest, похоже, относится к спецификации в качестве префикса.

Так выше колдовство будет

  • Run FooBar.js, Foo.js и FooZilla.js
  • Но НЕ запускать foo.js
+0

Спасибо, к сожалению, я получаю ту же ошибку при запуске: 'npm ERR! Ошибка: ENOENT, open '<путь к проекту>/node_modules/<имя файла>/package.json'' – Musket

+7

Для работы синтаксиса '-' вам нужно npm v2.0. – Cymen

+1

есть ли альтернативный метод для запуска тестов jest помимо командной строки? , как будто я делаю почтовый запрос в мой существующий проект, а его api будет давать мне проблему CSRF. Как я могу настроить тестирование jest на мой существующий проект? так что он начнет подавать запрос, используя «/ rest-api» вместо «http: // localhost: 8000/rest-api» –

5

Использование npm test не означает, что пошутить является установка по всему миру. Это просто означает, что «тест» сопоставляется с помощью шутки в вашем package.json

Следующее то, что работает для меня, на корневом уровне проекта:

node_modules/.bin/jest [args] 

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

+0

Работал для меня;) – wogsland

7

Для запуска отдельного теста:

ValidationUtil его мой модуль ValidationUtil.spec.js

npm test -t ValidationUtil 

-t -> после того, как он положил регулярное выражение, содержащее имя теста

4

если вы используете yarn вы можете добавить файл .spec.js или .test.js непосредственно после:

yarn test src/lib/myfile.test.js 

Это часть моего package.json с шуткой установить в качестве локального пакета (удалить соответствующие части):

{ 
... 
    "scripts": { 
    "test": "jest", 
    "testw": "jest --watch", 
    "testc": "jest --coverage", 
... 
    }, 
    "devDependencies": { 
    "jest": "^18.1.0", 
    ... 
    }, 

}