Angular 2 и jQuery — как протестировать?

#jquery #angular #karma-jasmine #angular-cli #angular2-testing

#jquery #angular #карма-жасмин #angular-cli #angular2-тестирование

Вопрос:

Я использую Angular-CLI (версию webpack) для своего проекта Angular 2, и мне также нужно использовать jQuery (к сожалению. В моем случае это зависимость от Semantic-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. Как вы включили jQuery в спецификацию вашего компонента? Я получаю ту же ошибку и попытался включить jQuery через массив файлов в karma.conf.js .

Ответ №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.

Комментарии:

1. О боже, это было в одном шаге от того, что я пытался сделать в течение 2 дней, я просто удалил флаг «включено» из той же строки, и это сработало!

2. когда я использую этот код jQuery(‘#confirmDialogModal’).modal(‘hide’);, я получаю модальную не функциональную ошибку при запуске тестовых примеров, но в реальном приложении это работает. также jQuery(‘#facilityIdModalButton’).click(); не выдает никаких запросов при выполнении тестовых примеров. есть идеи, как исправить или пропустить вызовы jquery