3
@Injectable()
export class Service1 {
constructor(private s2 : Service2) {
console.log(s2.name);
}
}
@Injectable()
export class Service2 {
public name: string = 'Hi';
}
//------------Test-------------
let service1: MockService1; // MockService1 extends Service1
let service2: MockService2; // MockService2 extends Service2
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
{ provide: Service1, useClass: MockService1 },
{ provide: Service2, useClass: MockService2 }
]
})
});
beforeEach(inject([ Service1 , Service2 ], (s1: MokcService1 , s2: MockService2 ) => {
service1 = s1;
service2 = s2;
}));
it('should be defined ',() => {
expect(service1).toBeDefined();
expect(service2).toBeDefined();
});
Ich erhalteAngular 2 RC5, Unit-Tests Problem mit Dienstleistungen
Typeerror: undefined ist kein Objekt (Bewertung 's2.name')
weil Service2 nicht definiert ist.
Der gleiche Code arbeitete früher mit addProviders und bieten
beforeEach(() => {
addProviders([
provide(Service1, {useClass: MockService1 }),
provide(Service2, {useClass: MockService2 }),
]);
});
Diese zwei Tests vorbei sind, wenn console.log (s2.name) entfernt wird
Jede Idee?
Der Code sollte '@Inject verwenden (...)' nicht '$ Inject (...)' und es gibt wahrscheinlich ein Problem woanders, wenn Sie '@Inject (xxx)' brauchen, wobei 'xxx' mit dem Typ des Parameters übereinstimmt. –
ah ja, @Inject, das war ein Tippfehler –