Testando componentes Angular2 que usam setInterval ou setTimeout

Eu tenho um componente ng2 simples e bastante típico que chama um serviço para obter alguns dados (itens do carrossel). Ele também usa setInterval para alternar automaticamente os slides do carrossel na interface do usuário a cada n segundos. Funciona muito bem, mas ao executar os testes do Jasmine, recebo o erro: "Não é possível usar o setInterval de dentro de uma zona de teste assíncrona".

Tentei agrupar a chamada setInterval em this.zone.runOutsideAngular (() => {...}), mas o erro permaneceu. Eu pensaria que alterar o teste para executar na zona fakeAsync resolveria o problema, mas recebo um erro dizendo que chamadas XHR não são permitidas na zona de teste fakeAsync (o que faz sentido).

Como posso usar as chamadas XHR feitas pelo serviço e o intervalo, enquanto ainda posso testar o componente? Estou usando o ng2 rc4, projeto gerado pelo angular-cli. Muito obrigado antecipadamente.

Meu código do componente:

constructor(private carouselService: CarouselService) {
}

ngOnInit() {
    this.carouselService.getItems().subscribe(items => { 
        this.items = items; 
    });
    this.interval = setInterval(() => { 
        this.forward();
    }, this.intervalMs);
}

E a partir da especificação Jasmine:

it('should display carousel items', async(() => {
    testComponentBuilder
        .overrideProviders(CarouselComponent, [provide(CarouselService, { useClass: CarouselServiceMock })])
        .createAsync(CarouselComponent).then((fixture: ComponentFixture<CarouselComponent>) => {
            fixture.detectChanges();
            let compiled = fixture.debugElement.nativeElement;
            // some expectations here;
    });
}));

questionAnswers(3)

yourAnswerToTheQuestion