Угловое юнит-тестирование макета paramMap get - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть компонент, который представляет элемент из списка, и для получения этого элемента я использую this.route.snapshot.paramMap.get('id').Как я высмеиваю это?Я пробовал

providers: [
                {
                    provide: ActivatedRoute,
                    useValue: { snapshot: { params: convertToParamMap({ id: '1' }) } }
                }
            ]

Но это приводит к

TypeError: Невозможно прочитать свойство 'get' из неопределенного

1 Ответ

0 голосов
/ 26 ноября 2018

Вы предоставляете

{ snapshot: { params: convertToParamMap({ id: '1' }) }, поэтому его snapshot.params

пока вы пытаетесь получить к нему доступ через this.route.snapshot.paramMap

, как вы можете видеть, нетparamMap в вашем макете.

Тот факт, что вы предоставляете объект как «значение», не означает, что этот объект автоматически станет экземпляром ActivatedRoute.Это именно то, что вы определили - простой объект.Контроллер типа времени выполнения отсутствует, поэтому это разрешено.

Вы можете просто предоставить частичную реализацию, что-то вроде

 useValue: { snapshot: { paramMap: {get:(id:number)=>{id:1}}}}

или сделать getter для этого свойства в своем компоненте - это позволит вам spy на этом вызове getter, перехватить его ивернуть требуемое значение.

...