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',()=>{consttb=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');constspan=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 autocompletionexpect(prefs.approved).toBeFalse();action.click('#my-button');expect(prefs.approved).toBeTrue();}));});🫡 (The redundant "should create" test is even called up for you!)
describe('AppService',()=>{consttb=serviceTestBed(AppService,{httpTesting: true});// 🛠️ Create the test bed and enable http testingit('should fetch cat fact',tb(({ service, http, rx },done)=>{constmockRes={fact: 'string',length: 6};rx.remind=service.getCatFact().subscribe({// 🧯 Use rx.remind to auto unsubscribe after the end of the testnext: (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-toolsVisit the docs at https://remscodes.github.io/ngx-testing-tools.
Check demo.spec.ts files.
Compatible with Angular >= 15.2.x.
- Mocks
- Angular schematics
MIT © Rémy Abitbol.