Angular-Testing: Angular5 spyOn не работает в дочерних компонентах - PullRequest
0 голосов
/ 25 октября 2018

У меня угловое приложение, и один его дочерний модуль загружается при отложенной загрузке.Я использую этот код в app.routing.ts для загрузки этого модуля.

{
    path: '',
    component: FullLayoutComponent,
    data: {
        title: 'Home'
    },
    children: [
        {
            path: 'dashboard',
            loadChildren: './views/dashboard/dashboard.module#DashboardModule'
        }
    ],
    canActivate: [LoggedInGuard]
},

Теперь во всех компонентах модуля приборной панели мое модульное тестирование не работает.то есть потому что spyOn не работает.позвольте мне показать код файла спецификации и фактическую функцию

it('be able to call getDemographicsData function from ngOnInit', () => {
        spy = spyOn(programDemographicsComponent, 'getDemographicsData').and.callThrough();
        spyOn(programDemographicsComponent, 'dateRangeHandler');
        programDemographicsComponent.ngOnInit();
        expect(programDemographicsComponent.getDemographicsData).toHaveBeenCalled();
    });

Функция, которую я тестирую модулем:

ngOnInit() {
        this.qualifyingProductsTableCurrentPage = 0;
        this.qualifyingProductsTableValuesPerPage = 5;
        const startDateMillis = moment().subtract(90, 'days').valueOf();
        const endDateMillis = moment().valueOf();
        this.getDemographicsData(startDateMillis, endDateMillis)
    }

    getDemographicsData(startDateMillis, endDateMillis) {
        console.log('spy is not working')
        const metricsRequestData = new MetricsRequest();
        metricsRequestData.startDateMillis = startDateMillis;
        metricsRequestData.endDateMillis = endDateMillis;
        this.getGenderData(metricsRequestData);
        this.getAgeData(metricsRequestData);
    }

Поскольку я шпионил за методом getDemographicsData(startDateMillis, endDateMillis) в тестовых случаях, но мойconsole.log('spy is not working') все еще работает.Пожалуйста, дайте мне знать, если понадобятся какие-либо подробности.

PS.Я проверил ту же проблему в родительских компонентах, и мой spyOn работает нормально в них.Я сталкиваюсь с проблемой только в компонентах с отложенной загрузкой

1 Ответ

0 голосов
/ 25 октября 2018

Поскольку отложенная загрузка является асинхронной операцией, тесты также должны быть асинхронными.Вы можете увидеть в этом SO вопросе как сделать его асинхронным.

...