Angular метод тестового компонента - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь проверить компонентный метод. Но я не могу вызвать его.

enter image description here

<!-- try to test addOrEditUser function -->
<table class="list" *ngIf="tableBody.length !== 0">
      <thead>
        <tr>
          <th *ngFor="let column of tableHeader">{{column.title}}</th>
        </tr>
      </thead>
      <tbody>
        <tr [ngClass]="checkClickability(row)" *ngFor="let row of tableBody" (click)="addOrEditUser(row)">
          <td class="inline" *ngFor="let d of row.slice(0, row.length - 1)">{{d}}</td>
          <td class="inline"><i class="fa fa-check" *ngIf="row[row.length - 1]"></i></td>
        </tr>
      </tbody>
</table>
// component
  public addOrEditUser(row: any[]): void {
    const isMember: boolean = row[row.length - 1];
    const profileId: string = row[0];

    // Do nothing if they are already a member
    if (isMember)
      return;
// component.spec.ts
  beforeEach(() => {
    fixture = TestBed.createComponent(QuickSearchPageComponent);
    component = fixture.componentInstance;
    component.createUserAttributes = attributeArray;
    component.existingUserAttributes = attributeArray;
    component.tableBody = tableBody;
    groupMembersService = TestBed.get(GroupMembersService);
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });

  it('should do nothing if row data is member', () => {
    spyOn(groupMembersService, 'addMembers');
    const tr: DebugElement[] = fixture.debugElement.queryAll(By.css('.search-page-table > table > tbody > tr'));
    tr[0].triggerEventHandler('click', null);  // 1. method 1, try to invoke it by triggerEventHandler
    component.addOrEditUser(tableBody[0]);     // 2. method 2, try to invoke it 
    expect(groupMembersService.addMembers).toHaveBeenCalled();
  });

Я пытаюсь вызвать component.addOrEditUser двумя способами, щелкните элемент и прямо называть его. Но никто из них не работает. Кто-нибудь знает что-нибудь об этом?

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