Невозможно выполнить угловое модульное тестирование из-за вызова метода, присутствующего внутри конструктора - PullRequest
0 голосов
/ 21 февраля 2019

Невозможно запустить угловой модульный тест из-за метода, присутствующего в конструкторе компонента.

 export class AppComponent  {
  name = 'Angular 4';
   constructor(){
    this.testMethod();
   }

   testMethod(){
         console.log("test method");
   }

  testMethodNonc(){
     console.log("test method nc");
  }
}

// мой файл спецификаций

describe('MyComponent', () => {
  let fixture, element;

  beforeEach(() => {
    TestBed.configureTestingModule({
      declarations: [
        AppComponent  
      ]
    });

    fixture = TestBed.createComponent(AppComponent);
    element = fixture.debugElement;
  })
  it('works', () => {
    fixture.detectChanges();
    expect(component.testMethodNonc()).toHaveBeenCalled();
  });
});

, когда я пытался запустить модульный тест для testMethodNonc (), функция testMethod () также работает вместе с этим методом, поскольку присутствует в конструкторе.Можно ли выполнить testMethodNonc () самостоятельно, используя фиктивную функцию testMethod?

1 Ответ

0 голосов
/ 21 февраля 2019

Поскольку вы создаете новый экземпляр класса, он будет продолжать вызывать testMethod.Вы можете шпионить за testMethod и callFake вместо вызова метода.Вы также можете использовать beforeAll вместо beforeEach, чтобы компонент создавался только один раз для теста.Таким образом, метод будет вызываться только при создании компонента.

После того, как ваш компонент создан, вы можете вызвать любой понравившийся метод и протестировать их по отдельности.

...