Angular 2 и jQuery - как тестировать?
Я использую Angular -CLI (версия webpack) для моего проекта Angular 2, и мне также нужно использовать jQuery (к сожалению. В моем случае это зависимость семантического UI, и я использую его для обработки выпадающие меню).
Как я его использую:
npm install jquery --save
Затем укажите в нем angular-cli.json
файл в массиве scripts
:
scripts": [
"../node_modules/jquery/dist/jquery.min.js"
]
Таким образом, он включается в файл пакета, и этот файл автоматически используется для корневого html файла:
<script type="text/javascript" src="scripts.bundle.js">
Затем declare var $: any;
в файлах, где он мне нужен, и он работает хорошо.
Однако существует проблема с тестами ng test
, поскольку Karma выдает ошибку $ is not defined
.
Ответы
Ответ 1
Это связано с тем, что тестовый html файл, предоставленный Karma, не включает файл scripts.bundle.js
, как обычно используется в обслуживаемой версии.
Решение легко; вы просто включаете тот же путь в файл jquery в файл karma.config.js
в корневой папке проекта. Этот файл доступен в корне проекта.
В массиве files
добавьте путь с флагом watched
следующим образом:
files: [
{ pattern: './node_modules/jquery/dist/jquery.min.js', watched: false },
{ pattern: './src/test.ts', watched: false }
]
Теперь карма должна знать о зависимости jQuery.