Угловой 5 тест кармы проваливается с импортом - PullRequest
0 голосов
/ 04 июня 2018

Я недавно перенес проект с Angular 2 на 5, и теперь все тестовые случаи, связанные с компиляцией представлений, ломаются.Предыдущие тесты, которые работали, больше не нужны.

Чтобы устранить проблему, я создал очень простой тест, чтобы попытаться выяснить, что происходит.

beforeEach(async(() => {
    TestBed.configureTestingModule({
        declarations: [Component],
        imports: [MatCardModule] //Breaks if any import is here (e.g. SharedModule)
    });
    TestBed.compileComponents(); //Breaks once this is run
}));
it('should display something',
    expect("").toContain("");
});

При импорте не возникает ошибки, он просто не запускаетсябольше тестов.Если импорта нет, он говорит мне, чтобы проверить, что Mat-Card является частью модуля.

Вот соответствующая часть package.json (недавно обновленная Карма):

"jasmine-core": "^3.1.0",
"jasmine-spec-reporter": "^4.2.1",
"karma": "^2.0.2",
"karma-chrome-launcher": "^2.2.0",
"karma-coverage": "^1.1.2",
"karma-jasmine": "^1.1.2",
"karma-mocha-reporter": "^2.2.5",
"karma-remap-istanbul": "^0.6.0",
"karma-systemjs": "^0.16.0"

ОБНОВЛЕНИЕ

После некоторого расследования я теперь считаю, что это проблема конфигурации с Karma.

Мне удалось обойти проблему MatCardModule, добавив

schemas: [CUSTOM_ELEMENTS_SCHEMA]

в TestBed.Хотя при добавлении провайдеров он будет работать с базовыми классами, которые не требуют импорта, но любые более сложные (например, ObservableMedia) не будут работать, даже если задан соответствующий импорт.Никаких ошибок не возникнет, ни один из тестов даже не запустится.

1 Ответ

0 голосов
/ 14 июня 2018

Итак, после недели осмотра я нашел решение, которое сработало для меня.

Я изначально использовал Angular Seed в качестве стартового проекта, но это было намного болеегод назад.При обновлении до Angular 5 я использовал онлайн-руководство вместо обновления проекта Angular Seed.Хотя это сработало, не все мои тесты были запущены.

Я потратил время на обновление файлов проекта до последней версии Angular Seed, и все тесты начали работать после импорта всех дополнительных пакетов в karma.config.js(с некоторыми ошибками).

Sidenote:

Проблема также может быть связана с неправильным импортом дополнительных пакетов в Karma.Следуйте этому руководству по правильному добавлению внешних зависимостей.

Если в компоненте есть пользовательские элементы, вам также может понадобиться добавить CUSTOM_ELEMENTS_SCHEMA в TestBed.

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