Compte tenu de ce composant simple:
import { Component} from '@angular/core';
@Component({
selector: 'app-component'
})
export class AppComponent {
foo() {
this.bar();
}
bar() {
console.log('hello');
}
}
Comment se fait-il que le test suivant ne valide pas que bar
est appelé lorsque j'appelle foo
describe('AppComponent', () => {
let component: AppComponent;
beforeEach(() => {
component = new AppComponent();
}
it('should foobar', () => {
component.foo();
spyOn(component, 'bar');
expect(component.bar).toHaveBeenCalled();
})
}
J'obtiens l'échec du test:
Expected spy bar to have been called.
Vous devez configurer l'espion avant d'appeler la méthode. Jasmine spys wrap fonction pour déterminer quand ils sont appelés et avec quoi ils sont appelés. La méthode doit être encapsulée avant l'appel de la méthode espionnée afin de capturer les informations. Essayez de modifier votre test pour qu'il corresponde aux éléments suivants:
it('should foobar', () => {
spyOn(component, 'bar');
component.foo();
expect(component.bar).toHaveBeenCalled();
})