Я недавно перенес проект с 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) не будут работать, даже если задан соответствующий импорт.Никаких ошибок не возникнет, ни один из тестов даже не запустится.