Недопустимый поставщик для NgModule "DynamicTestModule" при тестировании службы в Angular 2
у меня есть следующие услуги:
import { Injectable } from '@angular/core';
import { MenuItem } from './../classes/menu-item';
import { ITEMS } from './../static-data/items-list';
@Injectable()
export class ItemsListService {
getItems(): Promise<MenuItem[]> {
return Promise.resolve(ITEMS);
}
}
тест для этой службы здесь:
import { TestBed, async, inject } from '@angular/core/testing';
import { ItemListService } from './item-list.service';
import { MenuItem } from './../classes/menu-item';
import { ITEMS } from './../static-data/items-list';
describe('ItemListService', () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [ ItemListService, MenuItem, ITEMS ]
});
});
it('should ...', inject([ItemListService], (service: ItemListService) => {
expect(service).toBeTruthy();
}));
});
меню определяется здесь:
export class MenuItem {
name: string;
link: string;
}
элементы определены здесь: импорт { меню } от './../ классы / menu-item';
export var ITEMS: MenuItem[] = [
{name: 'Vehicles', link: '/vehicles'},
{name: 'Gateways', link: '/gateways'},
{name: 'Statuses', link: '/statuses'},
{name: 'Logs', link: '/logs'}
]
когда я запускаю тест, я получаю в консоли браузеров следующие ошибки:
FAILED ItemListService should ...
и
Итак, почему у меня есть эти ошибки? И каково решение для теста?
1 ответов
Это такая досадная ошибка, я подумал, что включу еще одну тонкую причину для поиска в вашей спецификации. В моем случае я указал "поставщик" вместо "предоставить", как показано ниже
TestBed.configureTestingModule({
providers: [{provider: ApplicationActions, useClass: ActionMock}]
вместо того, чтобы предлагать полезную информацию, такую как" нет "предоставить" указанный ключ", он просто сообщает
Failed: Invalid provider for the NgModule 'DynamicTestModule' - only instances of Provider and Type are allowed, got: [?[object Object]?, ...]