2017-02-01 18 views
2

にサービスをテストするとき、私は次のサービスがあります。無効なプロバイダ角度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(); 
    })); 
}); 

のMenuItemが定義されているがここで:

export class MenuItem { 
    name: string; 
    link: string; 
} 

アイテムはここで定義される: インポートからのMenuItem {}」./。 ./classes/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 ... 

enter image description here

を?そしてテストがうまくいく解決策は何ですか?

+1

を報告し、「何 『を提供』キーが指定されていません」のように、あなたがどのような依存性を持っていますかItemListServiceで? – AhmedRiyad

+0

いいえ、私は持っていませんが、問題が見つかりました。私が作った答えを見てください。 – Cristian

答えて

6

私は問題を発見:
それはスペルミス変数問題でした:サービスの輸出クラスは「ItemsListService」である


私はインポートしようとしていた名前は「ItemListService」である

を信じられないことが私はこの間違いをした。

5

これは迷惑なエラーです。あなたの仕様で探す別の微妙な原因を含めると思います。私の場合は、

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]?, ...] 
関連する問題