A importação de barril parece quebrar a ordem de carregamento

Eu tenho um componente que estou tentando testar na unidade, mas continuo recebendo esses erros, dependendo das minhas instruções de importação:

Error: Cannot resolve all parameters for 'MyComponent'(undefined, FormBuilder).

TypeError: Cannot read property 'toString' of undefined

Meu componente usa 2 parâmetros, um FormBuilder e um serviço personalizado, que devem ser injetados:

import {MyService} from '../';

@Component({
    ...,
    providers: [MyService]
})
class MyComponent {
    constructor(service: MyService, fb: FormBuilder) { ... }
    ...
}

E meu teste de unidade é configurado da seguinte maneira:

import {MyComponent} from './';
import {MyService} from '../';

describe('Component: MyComponent', () => {

    let builder: TestComponentBuilder;

    beforeEachProviders(() => [
        MyService,
        MyComponent
    ]);

    beforeEach(inject([TestComponentBuilder], function (tcb: TestComponentBuilder) {
        builder = tcb;
    }));

    it('should inject the component', inject([MyComponent],      
        (component: MyComponent) => {
            expect(component).toBeTruthy();
        })
    );

}

As importações parecem ser o problema, pois estou tentando usar barris:

|
|- my-component
|  |- index.ts
|  |- my.component.ts
|  |- my.component.spec.ts
|
|- my-service
|  |- index.ts
|  |- my.service.ts
|
|- index.ts

Dentro dos meus arquivos index.ts, estou fazendo:

export * from '<filename>';
export * from '<directory>';

como apropriado.

No entanto, quando altero as importações no componente AND de teste de unidade para fazer referência diretamente ao arquivo de serviço, o teste de unidade funciona.

import {MyService} from '../my-service/my.service';

Estou usando angular-cli neste projeto e o SystemJS está sendo configurado com o arquivo de configuração gerado a partir disso:

...
const barrels: string[] = [
  ...,

  // App specific barrels.
  'app',
  'app/my-service',
  'app/my-component'
  /** @cli-barrel */
];

const cliSystemConfigPackages: any = {};
barrels.forEach((barrelName: string) => {
  cliSystemConfigPackages[barrelName] = { main: 'index' };
});

/** Type declaration for ambient System. */
declare var System: any;

// Apply the CLI SystemJS configuration.
System.config({
  map: {
    '@angular': 'vendor/@angular',
    'rxjs': 'vendor/rxjs',
    'main': 'main.js'
  },
  packages: cliSystemConfigPackages
});
...

Parece que quando eu importo dos barris, as definições de componente e serviço não são carregadas antes do código de teste da unidade. O aplicativo em si irá transpilar e executar, de qualquer maneira.

Desculpe se isso está fazendo uma pergunta ampla, mas ainda sou novo no barrels e no SystemJS e não sei como restringir ainda mais o escopo:

Isso é um erro do SystemJS / Jasmine / TypeScript / Angular2 ou estou fazendo algo errado na minha instalação?

questionAnswers(1)

yourAnswerToTheQuestion