Если операторы не охвачены функциональным модульным тестированием - Жасмин - PullRequest
0 голосов
/ 11 апреля 2019

Я пишу тестовые примеры для жасмина для определенного кода. Я рассмотрел функции в компоненте, но операторы if в функциях не рассматриваются. Ниже приведены операторы if из функции, которые не рассматриваются.

 ngOnChanges(changes: SimpleChanges) {
 this.branchuserRole = this.userService.getUser().getId();
 if (this.data) {
  if (this.branchuserRole === this.TEST) {
    this.data = this.data.filter(task => task.assignedUser !== null);
    this.data = this.data.filter(task => task.assignedRole === this.TEST);
    this.summaryListLength = this.data.length;
  } else {
    this.summaryListLength = this.data.length;
  }

Вся часть if else не включена в покрытие кода. Ниже приведен код, который я пробовал.

it('should call ngOnChanges function', () => {
    const changes: any = '';
    spyOn(component, 'ngOnChanges').and.callThrough();
    component.ngOnChanges(changes);
    expect(component.ngOnChanges).toHaveBeenCalled();
});
it('should set the value of data', () => {
    const changes: any = '';
    component.ngOnChanges(changes);
    component.branchuserRole = TEST;
    expect(component.data).toBeTruthy();
    expect(component.data).toEqual(component.data.filter(task => task.assignedUser !== null));
    expect(component.taskData).toEqual(component.taskData.filter(
        task => task.assignedRole === TEST));
    expect(component.summaryListLength).toEqual(component.data.length);
});

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Не забывайте, что у вас есть сервис, который должен возвращать branchuserRole.Таким образом, вы должны инициализировать службу в TestBed, затем вам нужен шпион над ней и вернуть желаемое значение.Вот почему вы не можете пропустить оператор if с помощью branchUserRole.Теперь вы просто инициализируете branchUserRole с помощью TEST (я понятия не имею, что такое проверка ist), но когда вы вызываете NgOnChanges, значение branchUserRole перезаписывается или вы получаете ошибку, потому что служба не инициализирована.

1 голос
/ 11 апреля 2019

необходимо установить branchuserRole и data перед вызовом ngOnChanges

it('should set the value of data', () => {
    const changes: any = '';
    component.branchuserRole = TEST;
    component.data= []; // should not be null
    component.ngOnChanges(changes);
    expect(component.data).toBeTruthy();
    expect(component.data).toEqual(component.data.filter(task => task.assignedUser !== null));
    expect(component.taskData).toEqual(component.taskData.filter(
        task => task.assignedRole === TEST));
    expect(component.summaryListLength).toEqual(component.data.length);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...