Как скрыть элемент в angular 4 с помощью * ng-if?

Я пытаюсь протестировать @Input в angular 2. @Input скрыть или показать мой тег p. Я хочу протестировать эту функциональность с помощью жасмина.

вот мой компонент

import { Component,Input } from '@angular/core';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Angular 4';
  @Input() enable:boolean
  constructor() { }
}

код тестирования.

describe('@Input property ', () => {
    it('will not show p tag', () => {
      component.enable = false;
      fixture.detectChanges();
      PEl = fixture.debugElement.query(By.css('p'));
      console.info(PEl.nativeElement);
      expect(PEl.nativeElement.length).toEqual(0);
    })
  })

https://stackblitz.com/edit/angular-testing-wzxrin?file=app%2Fapp.component.spec.ts

Если вы используете *ngIf, и он false, то элемент не будет отображаться в дереве dom. Итак, ваш PEl = fixture.debugElement.query(By.css('p')); ничего не возвращает ... это то, что вам нужно будет проверить в своем тесте.

Fussel 28.05.2018 08:09

@ Фюссель, какие условия для этого

user944513 28.05.2018 08:16

Я проверил, что его длина - 0, но у меня он не работает

user944513 28.05.2018 08:16

У него нет длины, он будет нулевым

TheUnreal 28.05.2018 08:24
stackblitz.com/edit/…
user944513 28.05.2018 08:26

он работает для скрытия .. его длина никогда не 1 или больше, чем 0, если значение true

user944513 28.05.2018 08:27
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
6
216
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Проверьте, имеет ли он значение null, а не длину.

component.enable = false;
fixture.detectChanges();
PEl = fixture.debugElement.query(By.css('p'));
console.info(PEl.nativeElement);
expect(PEl).toBeUndefined();

как насчет включения true

user944513 28.05.2018 08:28
stackblitz.com/edit/…
user944513 28.05.2018 08:28
expect(PEl).not.toBeUndefined()
user4676340 28.05.2018 08:29

Смотрите, ваш тест не проходит

user944513 28.05.2018 08:30
stackblitz.com/edit/…
user944513 28.05.2018 08:30

Проверка на нуль, а не на длину

component.enable = false;
fixture.detectChanges();
PEl = fixture.debugElement.query(By.css('p'));
expect(PEl).tobeNull();

Другие вопросы по теме