Eckige 2-test-Spezifikationen für eine Komponente, die einen Dienst

Ich bin mit Winkel-2 final (2.0.1).
Ich habe eine Komponente, die eine Leistung erbringt. Es ist der einzige, der es verwendet, deshalb sind es und nicht die mit Modul und es ist auch injiziert werden, in den Konstruktor.

@Component({
    selector: 'my-comp',
    templateUrl: 'my-comp.component.html',
    styleUrls: ['my-comp.component.scss'],
    providers: [MyService],
})
export class MyComponent {

    constructor(private myService: MyService) {
    }
}

Wenn ich versuche zu implementieren ist die Skillung, es schlägt fehl.

describe("My Component", () => {

beforeEach(() => {
    TestBed.configureTestingModule({
        declarations: [MyComponent],
        providers: [
            {
                provide: MyService,
                useClass: MockMyService
            },
        ]
    });

    this.fixture = TestBed.createComponent(MyComponent);
    this.myService = this.fixture.debugElement.injector.get(MyService);

});

describe("this should pass", () => {

    beforeEach(() => {
        this.myService.data = [];
        this.fixture.detectChanges();
    });

    it("should display", () => {
        expect(this.fixture.nativeElement.innerText).toContain("Health");
    });

});

aber, wenn ich mich bewege, den Dienst bereitzustellen Erklärung von der Komponente zur enthält module, die Prüfungen geht.

Ich nehme an, es ist, weil der TestBed-Prüfung Modul definiert die mock-service, aber, wenn die Komponente erstellt wird, überschreibt es die mock mit der tatsächlichen Umsetzung...

Hat jemand eine Idee, wie man testen einer Komponente, die bietet einen service und Einsatz eines mock-service?

InformationsquelleAutor Sefi Ninio | 2016-10-06
Schreibe einen Kommentar