Как написать модульный тест в angular для тестирования кода маршрутизации внутри блока подписки - PullRequest
1 голос
/ 13 июля 2020

Я новичок в модульном тестировании в jasmine и karma для angular, здесь я пытаюсь протестировать навигацию маршрутизатора, здесь у нас есть служба, на которую отправляются некоторые данные, и внутри блока подписки я перехожу по ссылке ,

Для этого как написать модульный тест.

КОД ДЛЯ ФУНКЦИИ ВНУТРИ TS-ФАЙЛА.

onAction(action) {
   
    if (action == true) {
        this.data.action = action;
        this.data.loggedInId = this.id;
        this.Formservice.formMethod(this.data).subscribe(() => {
        this.router.navigate([`/${this.breadCrum}`]);
    });
    }
   }

КОД ДЛЯ SPE C .TS ФАЙЛА

it("Check the router navigate after onAction",fakeAsync(()=> {        
        component.onAction(true)
        flushMicrotasks()
        tick(10)
        fixture.detectChanges()
        tick(10)
        expect (mockRouter.navigate).toHaveBeenCalledWith ('/action-taken');
    }));

ШАГИ, КОТОРЫЕ Я СОЗДАЛ ДЛЯ СОЗДАНИЯ СЛУЖБЫ МАРШРУТИЗАТОРА MOCK

import { Routes, RouterModule, ActivatedRoute, Router } from '@angular/router';

let mockRouter = {
    navigate: jasmine.createSpy('navigate')
  }

providers:[
{ provide: Router, useValue: mockRouter}
]

Вот я получаю сообщение об ошибке Невозможно прочитать свойство 'подписка' неопределенного

1 Ответ

1 голос
/ 16 июля 2020

Создать 2 мока:

  1. Для сервиса:
export class MockFormservice{
   formMethod(){
     return of({})
   }
}

Для маршрутизатора:
export class MockRouter{
   navigate(){}
}

Таким образом вы можете повторно использовать его в других компонентах, а затем в spec файле:

providers:[
   { provide: Formservice, useClass: MockFormservice},
   { provide: Router, useClass: MockRouter}
]

вы также можете jasmine.createSpy, чтобы фиктивный код маршрутизатора был коротким. Ваш выбор.

Я настоятельно рекомендую вам прочитать мою статью о том, как обращаться с такими случаями . Он небольшой, но ориентирован на ежедневное тестирование для разработчика. Существует серия статей , в которых описывается еще несколько сценариев ios, которые наверняка помогут вам освоить основы при тестировании кода angular. Дайте мне знать, если вам понадобится дополнительная помощь

...