Это, вероятно, не имеет отношения к OP на данный момент, но для тех, кто сталкивается с подобной проблемой, и для которых ни одно из предоставленных решений для других связанных вопросов сработало или применимо, я оставлю это здесь.
Как и OP, у меня была ошибка [object ErrorEvent] thrown
в окне Жасмин и сопровождающая ошибка в консоли:
Uncaught Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'members'
Error: Cannot match any routes. URL Segment: 'members'
at ApplyRedirects.push../node_modules/@angular/router/fesm5/router.js.ApplyRedirects.noMatchError
...
Также как OP, путь, указанный в ошибке , не был указан в спецификации или в компоненте, к которому принадлежала спецификация .
После нескольких попыток исправить ошибкуЯ наконец решил отключить спец.Затем ошибка перешла к следующей спецификации.Поэтому я проверил спецификацию и компонент, который запускался непосредственно перед , который был указан как «сбой».Конечно, в предыдущем компоненте была ссылка на путь в ошибке, однако его спецификация не регистрировала путь в вызове RouterTestingModule.withRoutes
.
TLDR:
Если у вас есть спецификации для FirstComponent , SecondComponent и ThirdComponent , но ThirdComponent дает сбой при обстоятельствах, аналогичных описанным выше, тогда check SecondComponent , чтобы увидеть, есть ли там ссылка на маршрут.Если это так, создайте заглушку, объявите ее и добавьте в свой RouterTestingModule.withRoutes
импорт с отсутствующим маршрутом.например,
...
describe('SecondComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
RouterTestingModule.withRoutes([{path:'missing/path',component:SecondComponent}])
],
declarations: [ SecondComponent ]
})
})
...
})
@Component({selector:'app-second',template:''})
class SecondComponent {}
Надеюсь, это сэкономит кому-то время.Я потерял на этом часы, в основном потому, что слишком отчетливо воспринял отчет об ошибках.