Я пытаюсь проверить компонентный метод. Но я не могу вызвать его.
<!-- 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 двумя способами, щелкните элемент и прямо называть его. Но никто из них не работает. Кто-нибудь знает что-нибудь об этом?