Как выполнить модульное тестирование этой простой функции с Angular 6 / Jasmine - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть этот метод ниже в одном из моих компонентов.Как я могу написать для него модульный тест?

 getInitialSeats() {
    for (let i = 0; i < 100; i++) {
      i = i + 1;
      this.seatObj = {
        seatName: "Seat- " + i,
        seatId: "seat_" + i
      }
      this.totalSeats.push(this.seatObj);
      this.seatObj = {};
      i = i - 1;
    }
  }

1 Ответ

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

Перед написанием модульного теста я бы посоветовал вам немного улучшить свою функцию.Там есть некоторый код, который вам не обязательно нужен.Посмотрите на эту улучшенную функцию, которая делает то же самое.

getInitialSeats() {
  for (let i = 1; i <= 100; i++) {
    this.totalSeats.push({
      seatName: "Seat- " + i,
      seatId: "seat_" + i
    });        
  }
}

Чтобы протестировать эту функцию, я бы просто написал очень простой тестовый пример, подобный этому (я предполагаю, что эта функция находится в компоненте):

it('should test the initial seats generation', () => {
  // test the before state, i assume the array will be empty beforehand
  expect(component.totalSeats.length).toBe(0);

  // invoke the function
  component.getInitialSeats();

  // test the amount of seats generated
  expect(component.totalSeats.length).toBe(100);

  // test some of the objects generated
  expect(component.totalSeats[0]).toEqual({ seatName: 'Seat-1', seatId: 'seat_1'});
  expect(component.totalSeats[99]).toEqual({ seatName: 'Seat-100', seatId: 'seat_100'});
});

Если эта функция вызывается где-то в вашем компоненте на основе события / взаимодействия, то вы можете настроить шпиона, чтобы проверить, был ли он успешно вызван.Тест может выглядеть так:

it('should test the initial seats generation', () => {
  // setup spy and check it hasn't been called yet
  const spy = spyOn(component, 'getInitialSeats').and.callThrough();
  expect(spy).not.toHaveBeenCalled();

  // do something that will invoke the function, here we just call it ourselves
  component.getInitialSeats();

  // check spy
  expect(spy).toHaveBeenCalledTimes(1);

  // test the amount of seats generated
  expect(component.totalSeats.length).toBe(100);

  // test some of the objects generated
  expect(component.totalSeats[0]).toEqual({ seatName: 'Seat-1', seatId: 'seat_1'});
  expect(component.totalSeats[99]).toEqual({ seatName: 'Seat-100', seatId: 'seat_100'});
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...