Skip to content

Commit da1d209

Browse files
add test example for harness (#343)
1 parent 5e17e95 commit da1d209

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
2+
import { MatButtonHarness } from '@angular/material/button/testing';
3+
import { MatSnackBarHarness } from '@angular/material/snack-bar/testing';
4+
import { render, screen } from '@testing-library/angular';
5+
import user from '@testing-library/user-event';
6+
7+
import { SnackBarComponent } from './20-test-harness';
8+
9+
test('can be used with TestHarness', async () => {
10+
const view = await render(`<app-harness></app-harness>`, {
11+
imports: [SnackBarComponent],
12+
});
13+
const loader = TestbedHarnessEnvironment.documentRootLoader(view.fixture);
14+
15+
const buttonHarness = await loader.getHarness(MatButtonHarness);
16+
const button = await buttonHarness.host();
17+
button.click();
18+
19+
const snackbarHarness = await loader.getHarness(MatSnackBarHarness);
20+
expect(await snackbarHarness.getMessage()).toMatch(/Pizza Party!!!/i);
21+
});
22+
23+
test('can be used in combination with TestHarness', async () => {
24+
const view = await render(SnackBarComponent);
25+
const loader = TestbedHarnessEnvironment.documentRootLoader(view.fixture);
26+
27+
user.click(screen.getByRole('button'));
28+
29+
const snackbarHarness = await loader.getHarness(MatSnackBarHarness);
30+
expect(await snackbarHarness.getMessage()).toMatch(/Pizza Party!!!/i);
31+
32+
expect(screen.getByText(/Pizza Party!!!/i)).toBeInTheDocument();
33+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { Component } from '@angular/core';
2+
import { MatButtonModule } from '@angular/material/button';
3+
import { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';
4+
5+
@Component({
6+
selector: 'app-harness',
7+
standalone: true,
8+
imports: [MatButtonModule, MatSnackBarModule],
9+
template: `
10+
<button mat-stroked-button (click)="openSnackBar()" aria-label="Show an example snack-bar">Pizza party</button>
11+
`,
12+
})
13+
export class SnackBarComponent {
14+
constructor(private snackBar: MatSnackBar) {}
15+
16+
openSnackBar() {
17+
return this.snackBar.open('Pizza Party!!!');
18+
}
19+
}

0 commit comments

Comments
 (0)