Reason/Bucklescript + bs-jest: Как скомпилировать файлы с шаблоном *.test.re вне папки __tests__?

Предыстория:

В настоящее время я использую bs-jest для модульного тестирования. Кроме того, я использую проект инициализации bsb, что означает, что я сначала компилирую файлы с помощью Reason/Bucklescript +, а затем запускаю скомпилированные файлы с помощью Webpack.

Jest по умолчанию подберет файлы, в которых есть слово test, например, component.test.js, будет подхвачен Jest по умолчанию.

Bs-jest будет работать по умолчанию, файлы помещаются в каталог __tests__. Однако мои файлы спецификаций, следующие шаблону *.test.re, помещенные в папку моих компонентов, то есть помещенные в папку, отличную от __tests__, не будут компилироваться в соответствующий файл *test.js.

Цель:

Скомпилировать:

├── Components
|   ├── toolbar
|   |   └── toolbar.re
|   |   └── toolbar.test.re

To:

├── Components
|   ├── toolbar
|   |   └── toolbar.bs.js
|   |   └── toolbar.test.bs.js

а затем запустите Jest и запустите его, как сейчас по умолчанию.

Любая помощь более чем приветствуется. Спасибо.


person Charlie-Greenman    schedule 10.05.2018    source источник


Ответы (3)


Я использовал bs-jest в двух проектах, где тесты не проводились в корневом каталоге __tests__, так как я предпочитаю использовать src/test. Вам нужно настроить способ запуска шутки, чтобы запустить тесты и собрать покрытие. Как правило, нужно просто добавить --env=jsdom и указать каталог, например:

"test": "jest --env=jsdom --testMatch='**/test/*test.{js, re}' --watch"

Пример package.json и другой пример

person RawToast    schedule 22.08.2018

Это связано с тем, что в вашем bsconfig.json ваш пакет помечен как dev. Это означает, что его нельзя будет найти в источниках, не являющихся разработчиками, таких как ваша папка src. Переместив его в обычную зависимость, он будет работать так, как ожидалось.

При этом теперь вы можете понять архитектуру, возможно, почему она находится в своей собственной папке из-за причин компиляции.

person Charlie-Greenman    schedule 10.05.2018
comment
Если под этим вы подразумеваете bs-jest, вы не хотите, чтобы jest была зависимостью, отличной от dev. Ваше приложение не требует jest для запуска, и поэтому оно никогда не должно зависеть от времени выполнения. - person RawToast; 22.08.2018

вы можете настроить пути к тестовым файлам в package.json, например:

  ...

  "scripts": {
    "test": "jest",
    "watch:test": "jest --watchAll",
  },

  ...

  "jest": {
    "verbose": true,
    "testEnvironment": "jsdom",
    "testMatch": [
      "**/tests_jest/*.{js,re}",
      "**/tests_jest_blablabla/*.{js,re}"
    ]
  }
person Hartmut P.    schedule 20.04.2020