angular2 test, comment se moquer de sous-composant

Comment se moquer de la sous composante jasmin tests?

J'ai MyComponent, qui utilise MyNavbarComponent et MyToolbarComponent

import {Component} from 'angular2/core';
import {MyNavbarComponent} from './my-navbar.component';
import {MyToolbarComponent} from './my-toolbar.component';

@Component({
  selector: 'my-app',
  template: `
    <my-toolbar></my-toolbar>
    {{foo}}
    <my-navbar></my-navbar>
  `,
  directives: [MyNavbarComponent, MyToolbarComponent]
})
export class MyComponent {}

Quand je l'ai tester ce composant, je ne veux pas charger et tester ces deux sous-composantes; MyNavbarComponent, MyToolbarComponent, j'ai donc envie de s'en moquer.

Je sais comment se moquer avec les services de l'aide provide(MyService, useClass(...)), mais je n'ai aucune idée de la façon de se moquer de directives; composants;

  beforeEach(() => {
    setBaseTestProviders(
      TEST_BROWSER_PLATFORM_PROVIDERS,
      TEST_BROWSER_APPLICATION_PROVIDERS
    );

    //TODO: want to mock unnecessary directives for this component test
    //which are MyNavbarComponent and MyToolbarComponent
  })

  it('should bind to {{foo}}', injectAsync([TestComponentBuilder], (tcb) => {
    return tcb.createAsync(MyComponent).then((fixture) => {
      let DOM = fixture.nativeElement;
      let myComponent = fixture.componentInstance;
      myComponent.foo = 'FOO';
      fixture.detectChanges();
      expect(DOM.innerHTML).toMatch('FOO');
    });
  });

Voici mon plunker exemple;

http://plnkr.co/edit/q1l1y8?p=preview

  • Les composants fonctionnent très bien, votre question est une autre chose. Vous êtes à l'importation, par exemple, MyNavbarComponent mais dans votre classe de composant est appelé myNavbarComponent. Remarque les minuscules m, qui le fait échouer. Si vous en majuscules, il pourra fonctionner correctement.
  • merci @EricMartinez, je fixe les minuscules et le test fonctionne. Cependant ma question est toujours valable avec la façon de se moquer d'un composant. Je suis en train de tester MyComponent, pas MyNavbarComponent ni MyToolbarComponent
  • Oui, je suis désolé. Vous pouvez prendre un coup d'oeil à cette spec et de voir comment ils se moquent de la composante.
  • merci. J'ai posté ma propre réponse appris de vos commnet. Tout le crédit va à vous.
InformationsquelleAutor allenhwkim | 2016-03-13