Les tests ngOnChanges cycle de vie du crochet Angulaire 2

Donné le code suivant j'essaie de tester l' ngOnChanges cycle de vie du crochet de Angular2:

import {
    it,
    inject,
    fdescribe,
    beforeEachProviders,
} from '@angular/core/testing';

import {TestComponentBuilder} from '@angular/compiler/testing';

import {Component, OnChanges, Input} from '@angular/core';

@Component({
    selector: 'test',
    template: `<p>{{value}}</p>`,
})
export class TestComponent implements OnChanges {
    @Input() value: string;

    ngOnChanges(changes: {}): any {
        //should be called
    }
}

fdescribe('TestComponent', () => {
    let tcb: TestComponentBuilder;

    beforeEachProviders(() => [
        TestComponentBuilder,
        TestComponent,
    ]);

    beforeEach(inject([TestComponentBuilder], _tcb => {
        tcb = _tcb;
    }));

    it('should call ngOnChanges', done => {
        tcb.createAsync(TestComponent).then(fixture => {
            let testComponent: TestComponent = fixture.componentInstance;

            spyOn(testComponent, 'ngOnChanges').and.callThrough();

            testComponent.value = 'Test';
            fixture.detectChanges();

            expect(testComponent.ngOnChanges).toHaveBeenCalled();
            done();
        }).catch(e => done.fail(e));
    });
});

Malheureusement, le test échoue avec le message d' Expected spy ngOnChanges to have been called. je sais que je pourrais juste vérifier le contenu de l'Élément HTML dans cet exemple, mais j'ai un code qui doit être testé à l'intérieur de la ngOnChanes cycle de vie du crochet, donc c'est pas une solution pour moi. Aussi, je ne veux pas l'appeler testComponent.ngOnChanges({someMockData}); dans le test directement.

Comment puis-je régler le TestComponent.value à partir d'un test de sorte que ngOnChanges est appelé?

  • Je ne pense pas que vous devriez le faire tester à anguleuses, ses angulaire de l'équipe. vous avez juste besoin de trouver pourquoi, pour tester votre entreprise des codes autres que le cadre lui-même.
  • Je veux tester mon code de commerce qui est à l'intérieur de la ngOnChanges fonction
  • si vous avez besoin de faire e2e tests, peut-être http://www.protractortest.org aide
  • C'est tout à fait valable scénario. Il y a un problème à ce sujet sur Github
InformationsquelleAutor user1448982 | 2016-05-24