Ошибка: StaticInjectorError (DynamicTestModule) [RouterLinkWithHref -> Router]: (NullInjectorError: Нет поставщика для маршрутизатора!) - PullRequest
0 голосов
/ 29 января 2019

Я готовлю модульный тестовый пример для AppComponent, в котором маршрутизатор является внедренной зависимостью и включил RouterTestingModule в моем тестовом стенде.Но все равно получаю странную ошибку.Найдите журнал ошибок, показанный ниже:

Error: StaticInjectorError(DynamicTestModule)[RouterLinkWithHref -> Router]: 
  StaticInjectorError(Platform: core)[RouterLinkWithHref -> Router]: 
    NullInjectorError: No provider for Router!

свойства ошибки: Объект ({ngTempTokenPath: null, ngTokenPath: ['RouterLinkWithHref', Function], ngDebugContext: DebugContext _ ({view: Object ({def: Object ({factory: Function, nodeFlags: 671753, rootNodeFlags: 1, nodeMatchedQueries: 0, флаги: 0, узлы: [Object ({nodeIndex: 0, parent: null, renderParent: null, bindingIndex: 0, outputIndex: 0, checkIndex: 0, флаги: 1, childFlags: 671753, directChildFlags: 1, childMatchedQueries: 0, matchedQueries: Object ({}), matchedQueryIds: 0, ссылки: Object ({}), ngContentIndex: null, childCount: 10, привязки: [Object ({flags: 8, ns: '', name: 'className', nonMinifiedName: 'className', securityContext: 0, суффикс: undefined})], bindingFlags: 8, выходные данные: [], элемент: Object ({ns: '', name: 'nav', attrs: [Array], template: null, componentProvider: null, componentView: null, componentRendererType: null, publicProviders: null ({}), allProviders: null ({}),handleEvent: Функция}), поставщик: ноль, текст: ноль, запрос: ноль, ngContent: нуль}), объект ({... ошибка: StaticInjectorError (DynamicTestModule) [RouterLinkWithHref -> Router]: StaticInjectorError (платформа: ядро) [RouterLinkWithHref ->Маршрутизатор]: NullInjectorError: Нет поставщика для маршрутизатора!в NullInjector.get (веб-пакет: ///./node_modules/@angular/core/fesm5/core.js?: 1360: 19) в resolToken (веб-пакет: ///./node_modules/@angular/core/fesm5/core.js?: 1598: 24) в tryResolveToken (веб-пакет: ///./node_modules/@angular/core/fesm5/core.js?: 1542: 16) в StaticInjector.get (веб-пакет: ///./node_modules/@ angular / core / fesm5 / core.js?: 1439: 20) в resolToken (веб-пакет: ///./node_modules/@angular/core/fesm5/core.js?: 1598: 24) в tryResolveToken (веб-пакет: ///./node_modules/@angular/core/fesm5/core.js?:1542:16) в StaticInjector.get (веб-пакет: ///./node_modules/@angular/core/fesm5/core.js?: 1439:20) at resolNgModuleDep (веб-пакет: ///./node_modules/@angular/core/fesm5/core.js?: 8667: 29) в NgModuleRef_.get (веб-пакет: ///./node_modules/@angular/core/fesm5/core.js?:9355:16) at resolDep (веб-пакет: ///./node_modules/@angular/core/fesm5/core.js?: 9720: 45)

Пожалуйста, помогите.Я уже пытался удалить ссылки маршрутизатора из моего шаблона.

TestBed.configureTestingModule({
    declarations: [
      AppComponent
    ],
    imports: [
      CoreModule.forRoot(),
      RouterTestingModule.withRoutes(routes),
    ],
    providers: [
      {provide: APP_BASE_HREF, useValue: '/'},
    ]
}

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Мне удалось решить эту проблему.При изменении тестовых примеров я обновил версию @ types / jasmine, чтобы решить некоторые проблемы, а также обновил некоторые другие зависимости.В фоновом режиме мое приложение также сломалось из-за этого.Итак, я перепродал хранилище, а затем обновил только необходимые зависимости.Теперь код работает нормально.

0 голосов
/ 29 января 2019

Могу ли я узнать, импортировали ли вы RouterTestingModule?Вы должны импортировать его следующим образом:

import { RouterTestingModule } from '@angular/router/testing';

Кроме того, что такое routes в вашем RouterTestingModule.withRoutes(routes)?Вот пример того, как вы можете импортировать RouterTestingModule в свой испытательный стенд.

beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [
        HttpClientTestingModule
        RouterTestingModule.withRoutes([]),
      ],
      declarations: [
        SomeComponent
      ],
      providers: [           
        SampleService,
      ]

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