Prueba de ngOnChanges ciclo de vida de gancho en Angular 2

Dado el siguiente código, trato de probar elngOnChanges gancho de ciclo de vida 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));
    });
});

Lamentablemente, la prueba falla con el mensajeExpected spy ngOnChanges to have been called. Sé que podría verificar el contenido del elemento HTML en este ejemplo, pero tengo un código que debe probarse dentro del gancho del ciclo de vida de ngOnChanes, por lo que no es una solución para mí. Yo tampoco quiero llamartestComponent.ngOnChanges({someMockData}); en la prueba directamente.

¿Cómo puedo configurar elTestComponent.value de una prueba para quengOnChanges ¿se llama?

Respuestas a la pregunta(3)

Su respuesta a la pregunta