2016-03-25 10 views
0

イム:、順番に、angular2ユニットテストのようなサービスのためにいくつかのユニットテストを作成しようと

サービス2が含まれてい
export class Service1 { 
... 
    public constructor(service2: Service2, service3: Service3) {} 
... 
} 

Service3を:

export class Service2 { 
... 
    public constructor(service3: Service3, stringa: string) {} 
... 
} 

私はテスト を開始

it("check XXX",() => { 
    let service3: Service3= new Service3(); 
    let service2: service2= new service2(service3, "stringa"); 
    let service1: Service1 = new Service1(service2, service3); 
    expect(X).toEqual(X); 
}); 

しかし、今、私は何のhAPP beforeEachProvidersとを使用しています:本当にひどい方法などこれでアン:

beforeEachProviders(() => { 
    return [ 
     provide(Service2, { useclass: MockService2}), 
     provide(Service3, { useclass: MockService3}), 
     provide('stringa', { useValue: "stringa"}), 
     Service1 
    ]; 
    }); 

    it('check XXX ', inject(
    [Service2, Service3], (service2: Service2, service3: Service3) => { 
    expect(true).toEqual(true); 
    })); 

は次のとおりです。

Failed: No provider for String! (Service2-> String). 

が私を助けてsomebobyてもらえますか?

ありがとうございました。

答えて

0

あなたは依存性の注入から文字列値を挿入する場合は、@Injectデコレータを使用する必要があります:あなたが使用していない場合は実際のところ

export class Service2 { 
    ... 
    public constructor(service3: Service3, @Inject('stringa') stringa: string) {} 
    ... 
} 

を、注入は、デフォルトでは、パラメータの種類に依存しています@Injectデコレータ。

+0

私はすでにコンストラクタで@Injectデコレータを使用しましたが、Mockサービスでは使用しませんでした。本当にありがとう! – AntuJitsu

関連する問題