2017-09-25 2 views
0

Dire que j'ai une fonction simple avec une déclaration for:Pourquoi mon test Jasmine n'exécute-t-il pas le code de l'application dans une boucle for?

public addIcons(icons): void { 
    for (let icon of icons) { 
     this.iconRegistry.addSvgIcon(icon['name'], icon['path']); 
    } 
} 

Si je tente d'espionner iconRegistry.addSvgIcon, le test échoue. Si je modifie l'application pour appeler addSvgIcon en dehors de la boucle for, ça passe.

it('should add icons to the registry', inject([IconService, MdIconRegistry], (
    service: IconService, 
    iconRegistry: MdIconRegistry) => { 
    spyOn(iconRegistry, 'addSvgIcon'); 
    service.addIcons({ 'name': 'blah', 'path': 'blech' }); 
    expect(iconRegistry.addSvgIcon).toHaveBeenCalled(); 
})); 

journaux Console indiquent que la fonction addIcons est appelée, mais la déclaration for ne sont pas entrés. Pourquoi pas?

Répondre

1

Je ne suis pas un expert avec Typescript, mais vous passez un objet en tant que paramètre à addIcons, qui attend un tableau.

Modifier cette ligne:

service.addIcons({ 'name': 'blah', 'path': 'blech' }); 

à ceci:

service.addIcons([{ 'name': 'blah', 'path': 'blech' }]); 
+0

Merci. Voter pour fermer comme une faute de frappe. Nous laisserons la communauté décider. – isherwood