angular-testing
ALWAYS use when writing tests for Angular applications, including unit tests, component tests, service tests, or E2E tests with Jasmine, Karma, Vitest, or Cypress.
How do I install this agent skill?
npx skills add https://github.com/oguzhan18/angular-ecosystem-skills --skill angular-testingIs this agent skill safe to install?
- Gen Agent Trust Hubpass
No security issues detected. The skill provides standard documentation and best practices for Angular testing using official and well-known resources.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
What does this agent skill do?
Angular Testing
Version: Angular 21 (2025) Tags: Testing, Jasmine, Karma, Vitest, Cypress, Jest
References: Testing Guide • Testing API • Angular Blog
API Changes
This section documents recent version-specific API changes.
-
NEW: Vitest as default — Angular 21+ uses Vitest instead of Jasmine/Karma source
-
NEW: Template coverage — Coverage reports now include HTML templates source
-
NEW: Component input testing — Test component inputs directly with
Component输入 -
NEW: Functional interceptors for testing — Easier to test HTTP interceptors
-
DEPRECATED: Karma test runner — Migrate to Vitest for modern Angular
Best Practices
- Use TestBed for component testing
import { TestBed } from '@angular/core/testing';
import { MyComponent } from './my.component';
describe('MyComponent', () => {
let component: MyComponent;
let fixture: ComponentFixture<MyComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [MyComponent]
}).compileComponents();
fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
- Use AAA pattern (Arrange-Act-Assert)
it('should calculate total correctly', () => {
// Arrange
const service = new CalculatorService();
// Act
const result = service.add(2, 3);
// Assert
expect(result).toBe(5);
});
- Use
fakeAsyncandtickfor async operations
import { fakeAsync, tick } from '@angular/core/testing';
it('should fetch data after delay', fakeAsync(() => {
service.getData();
tick(1000);
expect(component.data).toBeTruthy();
}));
- Use spies for mocking
it('should call service', () => {
spyOn(service, 'getData').and.returnValue(of({ name: 'Test' }));
component.loadData();
expect(service.getData).toHaveBeenCalled();
});
- Use
by.cssfor querying DOM elements
import { By } from '@angular/platform-browser';
it('should display title', () => {
fixture.detectChanges();
const el = fixture.debugElement.query(By.css('.title'));
expect(el.nativeElement.textContent).toBe('Hello');
});
- Test behavior, not implementation
// ❌ Bad - tests implementation details
expect(component['privateMethod']).toHaveBeenCalled();
// ✅ Good - tests behavior
expect(fixture.nativeElement.querySelector('.result')).toContain('expected');
- Use
provideHttpClientfor HTTP testing
TestBed.configureTestingModule({
providers: [
provideHttpClient(withInterceptors([authInterceptor]))
]
});
- Use mock services for dependencies
const mockAuthService = {
isAuthenticated: jasmine.createSpy().and.returnValue(true),
getToken: jasmine.createSpy().and.returnValue('fake-token')
};
TestBed.configureTestingModule({
providers: [{ provide: AuthService, useValue: mockAuthService }]
});
- Test form validation
it('should show error for invalid email', () => {
component.form.controls.email.setValue('invalid');
component.form.controls.email.markAsTouched();
fixture.detectChanges();
expect(fixture.nativeElement.querySelector('.error')).toBeTruthy();
});
- Use
detectChangesappropriately
// After changing component properties
component.value = 'new value';
fixture.detectChanges();
// For async operations
fixture.detectChanges();
await fixture.whenStable();
fixture.detectChanges();
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/oguzhan18/angular-ecosystem-skills/angular-testing">View angular-testing on skillZs</a>