Метод триггера jquery (). для имитации клика не работает, но nativeElement.click делает - PullRequest
1 голос
/ 08 октября 2019

У меня есть html

Предыдущая сессия уже существует. Пожалуйста, повторно введите пароль для {{username}} или нажмите здесь, чтобы выйти и перейти на домашнюю страницу
<div class="flex-container">
  <!--
  app login form is child of validate session here. One of the ways to commuicate from child to parent is to
  emit event from child and handle it in parent. Note that the event emitter name in child is used here i.e.
  app-login-form has @Output() formOutputEvent: EventEmitter<LoginFormValues>;
  -->
  <app-login-form #loginForm (formOutputEvent)="handleFormValues($event)" [userId]="username"></app-login-form>
</div>

Я хочу смоделировать нажатие <a> в моем тесте. Я пытался использовать jquery trigger, но это не сработало. Но если я использую nativeElement.click(), то контрольный пример проходит. Почему jquery.trigger не работает?

Не работает

fit('should send signout request if user decides to cancel signin using id from existing session',()=>{
    let userService:UserManagementService = TestBed.get(UserManagementService);
    spyOn(userService,'onUserSignout');
    //expect(component.cancelLoginLink).toBeTruthy();
    expect($("#cancel-signin-link")).toBeTruthy();
    $("#cancel-signin-link").trigger("click");
    //component.cancelLoginLink.nativeElement.click();
    expect(userService.onUserSignout).toHaveBeenCalled();
  });

Но это работает

fit('should send signout request if user decides to cancel signin using id from existing session',()=>{
    let userService:UserManagementService = TestBed.get(UserManagementService);
    spyOn(userService,'onUserSignout');
    expect(component.cancelLoginLink).toBeTruthy();
    //expect($("#cancel-signin-link")).toBeTruthy();
    //$("#cancel-signin-link").trigger("click");
    component.cancelLoginLink.nativeElement.click();
    expect(userService.onUserSignout).toHaveBeenCalled();
  });

Я также заметил, что если я использую jquery, тодаже это ожидание проходит expect($("#cancel-signin-lk")).toBeTruthy(); (НЕПРАВИЛЬНОЕ ИМЯ ID)

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