Тестирование угловой функции async / await в Jasmine - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь создать модульный тест для проверки углового компонента, который использует ключевые слова async/await для вызова $q. Я хочу смоделировать возвращаемое значение $q и сделать так, чтобы мой компонент обработал эти проверенные данные. К сожалению, похоже, что эти данные не проверяются должным образом, и части компонента, на котором я проверяю значения, возвращают нуль, потому что они никогда не генерируются.

Я уже провел некоторые исследования по модульному тестированию асинхронных функций в jasmine / angular:

http://www.bradoncode.com/blog/2015/07/13/unit-test-promises-angualrjs-q/

Угловые 1,5 && Асинхронные / Await && Жасминовые тесты

Но не имели никакого успеха. Добавление метода $scope.$apply() создает новые проблемы, связанные с тем, что нужно смоделировать многие другие вызовы $httpbackend, которые выполняет моя платформа. Издевательство над обещанием быть возвращенным из $ q также не помогло.

Функция, которую я пытаюсь проверить:

this.resolver(async () => {
     const preliminaryResults = await this.$q.all(dataPromises);
     const results = await this.checkDataAmount(preliminaryResults, restangularQueryable, startDate, endDate);

// Do some processing on the data

Мой юнит-тест выглядит так:

it('should support calendar preview', () => {
            component.alert.whenCondition = 'CALENDAR';
            const response = [{
                timestamps: [1, 2, 360000000],
                timestampsWithValues: [],
                values: [1, 2, 3]
            }, {
                values: {
                    avg: 1
                }
            }];
            const promise = new Promise((resolve, reject) => {
                resolve(response);
            });
            spyOn(component, 'checkDataAmount').and.returnValue(promise);
            spyOn($q, 'all').and.returnValue(promise);
            component.getAlertPreviewConfig();
            expect(component.chartConfig.yAxis.plotLines[0].value).toBe(5);
            expect(component.chartConfig.yAxis.max).toBe(5.5);
            expect(component.chartConfig.series[0].data).toEqual([{x: 1, y: 5}, {x: 2, y: 5}, {x: 172800001, y: 5}, {x: 172800002, y: 5}, {x: 360000000, y: 5}]);
            expect(component.chartConfig.series[1].data).toEqual([{x: 1, y: 0}, {x: 2, y: 0}, {x: 2, y: 2}, {x: 1, y: 2},
                {x: null, y: null}, {x: 1, y: 5}, {x: 2, y: 5}, {x: 2, y: 1005}, {x: 1, y: 1005}, {x: null, y: null}]);
            expect(component.chartConfig.series[2].data).toEqual([{x: 172800001, y: 0}, {x: 172800002, y: 0}, {x: 172800002, y: 2}, {x: 172800001, y: 2},
                {x: null, y: null}, {x: 172800001, y: 5}, {x: 172800002, y: 5}, {x: 172800002, y: 1005}, {x: 172800001, y: 1005}, {x: null, y: null}]);
        });

Я ожидаю, что свойства component не будут нулевыми после выполнения теста. В частности, я бы ожидал, что chartConfig не будет нулевым. Я проследил тест, и кажется, что тест останавливается после вызова await в моем коде. Что я здесь не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...