Angular testing
Skill ComeOnOliver/skillshub/skills/HoangNguyen0403/agent-skills-standard/angular-testing
🧠The right skill, one API call. AI agent skills registry with token-efficient skill resolution. 5,000+ skills from 500+ top repos.
npx -y skills add ComeOnOliver/skillshub --skill angular-testingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Standards for Component Test Harnesses and TestBed. Use when writing Angular component tests with TestBed or Component Harnesses. (triggers: **/*.spec.ts, TestBed, ComponentFixture, TestHarness, provideHttpClientTesting)
SKILL.md
2.1 KB, 433 tokens by cl100k_base, as published. Nobody here has run it
Testing
Priority: P1 (HIGH)
Principles
- Harnesses: Always use ComponentHarness (e.g., MatButtonHarness or custom ones) to interact with components via getHarness. Never query by CSS class or DOM/CSS selectors in tests — harnesses are stable and don't break when CSS classes change. Wait for await button.click() or similar calls.
- Provider Mocks: Use provideHttpClientTesting() instead of mocking
HttpClientmanually. Inject HttpTestingController to use expectOne,.flush(mockData), and verify() in afterEach. Never mock HttpClient directly. - Signal Testing: Signals update synchronously — no fakeAsync needed usually.
Test Runner
Angular v20+ supports Vitest natively via @angular/build:unit-test builder in angular.json. Vitest is recommended for new projects as it is faster, native ESM, and no Karma needed. Jasmine/Karma still supported.
Signal Input Testing
Use fixture.componentRef.setInput('name', value) to set signal inputs in tests — do NOT assign component.name = value directly — this doesn't work for signal inputs. After setInput() call fixture.detectChanges() to trigger re-render.
Guidelines
- Avoid logic: Tests should just assert inputs and outputs.
- Spectator: Consider using libraries like
@ngneat/spectatorfor cleaner boilerplate if allowed. - Standalone: Import the standalone component directly in
TestBed.configureTestingModule({ imports: [MyComponent] }).
Anti-Patterns
- No DOM CSS selectors: Query via
ComponentHarness, not CSS class strings. - No manual HttpClient mock: Use
provideHttpClientTesting()+HttpTestingController. - No @Input() in tests: Use
fixture.componentRef.setInput()for signal inputs.
References
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.