Angular Jasmine TypeError: Невозможно прочитать свойство 'transform' из null - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь проверить Трубу со звездами, но я получаю TypeError: Невозможно прочитать свойство 'transform' из null.

import { StarsPipe } from './stars.pipe';

fdescribe('StarsPipe', () => {
    const inputStars = [
      { 'stars': 5 },
      { 'stars': 4 },
      { 'stars': 3 }
    ];

    afterEach(() => {
        starPipe = null;
    });

    let starPipe: StarsPipe = null;

    it('pipe for five stars', () => {
        const fivestars = starPipe.transform(inputStars, true, false, false);
        const expectedResult = [{ 'stars': 5 }];

        expect(fivestars).toEqual(expectedResult);
    });

    it('pipe for four stars', () => {
        const fourstars = starPipe.transform(inputStars, false, true, false);
        const expectedResult = [{ 'stars': 4 }];

        expect(fourstars).toEqual(expectedResult);
    });

    it('pipe for three stars', () => {
        const threestars = starPipe.transform(inputStars, false, false, true);
        const expectedResult = [{ 'stars': 3 }];

        expect(threestars).toEqual(expectedResult);
    });
});

Труба это:

import { Pipe, PipeTransform } from '@angular/core';
import { Room } from './room';

@Pipe({
  name: 'stars',
  pure: true
})
export class StarsPipe implements PipeTransform {
    filter = {
        five: true,
        four: true,
        three: true
    };
    transform(rooms: Array < Room > , five: boolean, four: boolean, three: boolean): any[] {
        if (five === true) {
            return rooms.filter(x => (x.stars === 5));
        } else if (four === true) {
            return rooms.filter(x => (x.stars === 4));
        } else if (three === true) {
            return rooms.filter(x => (x.stars === 3));
        } else {
            return null;
        }
    }
}    

Я искал без результата, я не знаю об этом, но у меня есть аналогичная ошибка тестирования маршрутизации тоже. На других проектах роутинг работает нормально. При маршрутизации ошибка составляет debugElement из undefined, возможно, есть проблема в моем тестировании, не уверен.

1 Ответ

2 голосов
/ 09 января 2020

При выполнении тестов starPipe равно null, поскольку оно не инициализировано должным образом. Следовательно, вызов starPipe.transform приводит к этой ошибке.

Вы можете избавиться от метода afterEach, но вместо него следует добавить метод beforeEach, где вы инициализируете starPipe следующим образом:

let starPipe: StarsPipe;

beforeEach(() => {
    starPipe = new StarsPipe(); 
});
...