Достичь переменной после проверки события клика [Angular - Jasmine] - PullRequest
0 голосов
/ 27 сентября 2019

Я относительно новичок в создании юнит-тестирования, и, несмотря на то, что я изучаю документы и гуглюсь, я не нахожу никакого подхода к своим намерениям.

Я хочу проверить это, если после щелчкакнопка переменные получают новые значения, но после проверки, что форма действительна и эффективно была вызвана функция, если я проверяю переменные, она остается в старом значении, есть способ достичь этого или я делаю неправильный подходпроверить мой компонент?

К этому моменту я уже сделал тест для шаблонов, высмеиваю сервисы, даже изменил значения с помощью debugElement.setValue ('...') с формами, на данный моментвсе хорошо.

Я пытался создать условие «ожидаемо» после fixture.detectChanges (), но не могу проверить, изменился ли после щелчка переменная.

it('should click if [VALID]', async(() => {
    component.identificationForm.controls['username'].setValue('userTest');
    component.identificationForm.controls['password'].setValue('passTest');

    fixture.detectChanges();

    // SpyOn component.onSubmit 
    // inner Fn() = component.error = !component.error;

    spyOn(component, 'onSubmit');

    const el = fixture.debugElement
              .query(By.css('.sb-btn_raised')).nativeElement;
    el.click();

    expect(component.onSubmit).toHaveBeenCalled();

    fixture.detectChanges();

    expect(component.error).toBe(true); 
    // this after click should be True but it stays as false.
  }));
});

ВВ конце я хочу попробовать, если после нажатия кнопки я получу новые значения, которые мне всегда будут нужны в различных сценариях, таких как ошибка, предупреждение или успех.

Смысл в том, что независимо от того, какая реализация илидаже ответ, компонент будет вести себя как ожидалось.

|-------------------- Решение ---------------------- |

Просто добавьте spyOn (component, 'onSubmit'). And.callThrough ();для слежки за ним вызовите внутренние коды блоков.

...