2016-03-25 32 views
0

Im gibi bir hizmet için bazı Ünite Testi yazmaya çalışıyorumangular2 birim test

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

i testi başlayan

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); 
}); 

ama şimdi, ben neyi happ beforeEachProviders ve kullanıyorum: gerçekten korkunç bir yol gibi Bununla tr:

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); 
    })); 

geçerli:

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

bana yardım someboby olabilir mi?

Teşekkürler. Eğer bağımlılık enjeksiyon gelen dize değerini enjekte etmek istiyorsanız

cevap

0

, sen @Inject dekoratör kullanmak gerekir: Kullanmak yoksa Nitekim olarak

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

, enjeksiyon varsayılan olarak parametre tipleri dayanır @Inject dekoratör.

+0

Zaten yapımcıda @Inject decorator kullanmıştım, ancak Mock hizmetinde değil !! Gerçekten teşekkürler! – AntuJitsu