2017-02-17 7 views
2

Учитывая этот простой компонент:тестирования, метод компонента вызывает другой метод

import { Component} from '@angular/core'; 

@Component({ 
    selector: 'app-component' 
}) 
export class AppComponent { 
    foo() { 
    this.bar(); 
    } 

    bar() { 
    console.log('hello'); 
    } 
} 

Как прийти следующий тест не будет проверять, что bar вызывается, когда я называю foo

describe('AppComponent',() => { 
    let component: AppComponent; 

    beforeEach(() => { 
    component = new AppComponent(); 
    } 

    it('should foobar',() => { 
    component.foo(); 
    spyOn(component, 'bar'); 
    expect(component.bar).toHaveBeenCalled(); 
    }) 

} 

Я получаю неудачный тест:

Expected spy bar to have been called. 

ответ

6

Вам нужно настроить шпиона перед собой тод называется. Функция обрезки Jasmine spys, чтобы определить, когда они вызываются и с чем они вызваны. Метод должен быть обернут перед вызовом метода spied on для сбора информации. Попытайтесь сменить тест следующим образом:

it('should foobar',() => { 
    spyOn(component, 'bar'); 
    component.foo(); 
    expect(component.bar).toHaveBeenCalled(); 
}) 
Смежные вопросы