This library aims to reduce boilerplate ๐ and provides high-level tools๏ธ ๐ฅ for testing Component, Guard, Interceptor and everything else related to the Angular mechanism.
It makes tests easier to read ๐ and faster to write โก๏ธ!
describe('AppComponent', () => {
const tb = componentTestBed(AppComponent) // ๐ ๏ธ Create the test bed which is re-compiled for each test
.inject('prefs', Preferences); // ๐๏ธ Link a key to an injection for all tests, see below ๐
it('should render title', tb(({ component, query }) => { // ๐ Access enhanced tools for testing components
expect(component.title).toEqual('app-v17');
const span = query.findElement('.content span');
expect(span.textContent).toContain('app-v17 app is running!');
}));
it('should update preferences on click', tb(({ action, injected: { prefs } }) => { // ๐คฏ Retrieve injections by autocompletion
expect(prefs.approved).toBeFalse();
action.click('#my-button');
expect(prefs.approved).toBeTrue();
}));
});
๐ซก (The redundant "should create" test is even called up for you!)
describe('AppService', () => {
const tb = serviceTestBed(AppService, { httpTesting: true }); // ๐ ๏ธ Create the test bed and enable http testing
it('should fetch cat fact', tb(({ service, http, rx }, done) => {
const mockRes = { fact: 'string', length: 6 };
rx.remind = service.getCatFact().subscribe({ // ๐งฏ Use rx.remind to auto unsubscribe after the end of the test
next: (res) => {
expect(res).toEqual(mockRes);
done();
},
});
http.emitSuccessResponse({ url: service.CAT_FACT_URL, body: mockRes }); // ๐ญ Fake the http response of the request that matches the url
}));
});
npm install --save-dev ngx-testing-tools
Visit the docs at https://remscodes.github.io/ngx-testing-tools.
Check demo .spec.ts
files.
Compatible with Angular >= 15.2.x
.
- More custom test beds :
ResolverTestBed
- Mocks
- Angular schematics
MIT ยฉ Rรฉmy Abitbol.