пользовательская директива модульного тестирования - PullRequest
0 голосов
/ 25 марта 2019

Я использую материал угловой и у меня есть форма с мат-флажком.

Над флажком указаны условия использования, и пользователь должен прокрутить условия использования вниз, чтобы включить флажок, который по умолчанию отключен.

Проблема в том, что с помощью директивы [disabled] отправьте сообщение (использование директивы ts blablabla нецелесообразно).

Мое решение - создать специальную директиву:

export class MyDisabledDirective {
 @Input() set myDisabled(condition: boolean) {
    const input = this.ngControl.control;
    condition ? input.disable() : input.enable();
  }

  constructor( private ngControl: NgControl ) {
  }
}

Хорошо, очень просто, все работает.

Теперь мне нужно выполнить юнит-тест для этой директивы, но это невозможно, все, что я пытаюсь, не работает.

Прямо сейчас характеристики выглядят так:

@Component({
  selector: fake-component',
  template: `
    <button [myDisabled]="condition">Testing</button>
  `,
})
class FakeComponent {
  condition = true;
}

describe('DisabledDirective', () => {
  let component: FakeComponent;
  let fixture: ComponentFixture<FakeComponent>;
  let button: DebugElement;

  beforeEach(() => {
    TestBed.configureTestingModule({
      declarations: [FakeComponent, MyDisabledDirective],
      providers: [NgControl],
    });
    fixture = TestBed.createComponent(FakeComponent);
    component = fixture.componentInstance;
    button = fixture.debugElement.query(By.css('button'));
  });

  it('should disable if the condition is true', () => {
    component.condition = true;
    expect(button.nativeElement.disabled).toBeTruthy();
  });

  it('should enable if the condition is false', () => {
    component.condition = true;
    expect(button.nativeElement.disabled).toBeFalsy();
  });
});

Не работает, а button.nativeElement.disabled каждый раз ложно. И мне интересно, хорош ли способ проведения тестов.

Надеюсь, Вы можете помочь мне, С уважением

console.log: enter image description here

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