jQuery вызывает тесты Angular - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть компонент, который импортирует и использует плагин jquery:

declare let $: any;
declare let jQuery: any;

import { Component, HostListener, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';
// other imports
import './vendor/jqchart/js/jquery.jqChart.min.js';

...

@Component({
  selector: 'app-chart',
  templateUrl: './chart.component.html',
  styleUrls: ['./chart.component.css'],
})
export class ChartComponent implements OnInit, OnDestroy {

  ...

  ngOnInit() {
    $(element).jqChart(jqChartConfig);   // in ngOnInit() or something
  }

  ...

}

Он прекрасно работает, но тесты не пройдены:

An error was thrown in afterAll
ReferenceError: jQuery is not defined
    at Object../src/app/sandboxviews/chart/vendor/jqchart/js/jquery.jqChart.min.js (http://localhost:9877/_karma_webpack_/webpack:/src/app/sandboxviews/chart/vendor/jqchart/js/jquery.jqChart.min.js:11829:2)
    at __webpack_require__ (http://localhost:9877/_karma_webpack_/webpack:/webpack/bootstrap:78:1)
    at Module../src/app/sandboxviews/chart/chart.component.ts (http://localhost:9877/_karma_webpack_/webpack:/src/app/sandboxviews/chart/chart.component.ts:1:1)
    at __webpack_require__ (http://localhost:9877/_karma_webpack_/webpack:/webpack/bootstrap:78:1)
    at Module../src/app/app-routing.module.ts (http://localhost:9877/_karma_webpack_/main.js:819:94)
    at __webpack_require__ (http://localhost:9877/_karma_webpack_/webpack:/webpack/bootstrap:78:1)
    at Module../src/app/app.component.spec.ts (http://localhost:9877/_karma_webpack_/webpack:/src/app/app.component.spec.ts:1:1)
    at __webpack_require__ (http://localhost:9877/_karma_webpack_/webpack:/webpack/bootstrap:78:1)
    at webpackContext (http://localhost:9877/_karma_webpack_/webpack:/src sync \.spec\.ts$:19:1)
    at Array.map (<anonymous>)

Компонент импортируется во все тестированиемодули правильно. Хотя я замечаю, что когда я вынимаю его из одного, скажем, основного теста приложения, а затем просто запускаю этот тест, я получаю сбой jQuery до того, как у него появляется возможность заставить необъявленный модуль вызвать его сбой.

Раньше объявления для $ и jquery были под импортом, я надеялся, что перемещение их вверх исправит это, но не повезло.

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