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.