static означает, что у вас будет только один экземпляр
final, это означает, что вы не можете назначить это значение.
Вы никогда не назначаете класс .user-email
в своем примере кода. Вы только назначаете класс .user-row
элементу tr
. Если вы хотите получить элементы по классам, вы можете использовать классы, назначенные Angular Material. Каждый элемент td
получает класс формата mat-column-{columnName}
, например, mat-column-email
в вашем случае.
Вот как я бы это проверил:
it('should test the table ', (done) => {
expect(component.users).toEqual(testUsers);
fixture.detectChanges();
fixture.whenStable().then(() => {
fixture.detectChanges();
let tableRows = fixture.nativeElement.querySelectorAll('tr');
expect(tableRows.length).toBe(4);
// Header row
let headerRow = tableRows[0];
expect(headerRow.cells[0].innerHTML).toBe('Email');
expect(headerRow.cells[1].innerHTML).toBe('Created');
expect(headerRow.cells[2].innerHTML).toBe('Roles');
// Data rows
let row1 = tableRows[1];
expect(row1.cells[0].innerHTML).toBe('dummy@mail.com');
expect(row1.cells[1].innerHTML).toBe('01-01-2020');
expect(row1.cells[2].innerHTML).toBe('admin,standard');
// Test more rows here..
done();
});
});
Вы можете найти работающий блик стека здесь .