Testando funções DI em Angular
Dec 11 2022
Um novo método estático chamado runInInjectionContext foi adicionado ao TestBed no Angular v15.1.
Um novo método estático chamado runInInjectionContextfoi adicionado ao TestBedAngular v15.1.0-next.0 para facilitar o teste inject(). A runInInjectionContextfunção funciona de forma semelhante à runInContextfunção. Digamos que temos uma função que usa o httpmódulo para buscar usuários:
export function getUsers() {
return inject(HttpClient).get<User[]>('users');
}
import { TestBed } from '@angular/core/testing';
import {
HttpClientTestingModule,
HttpTestingController,
} from '@angular/common/http/testing';
describe('Users', () => {
it('should fetch users', () => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
});
const controller = TestBed.inject(HttpTestingController);
TestBed.runInInjectionContext(getUsers).subscribe((users) => {
expect(users.length).toBe(1);
});
controller.expectOne('users').flush([{ id: 1 }]);
});
});
export const FOO = new InjectionToken('FOO', {
providedIn: 'root',
factory() {
return 'foo';
},
});
export function getFoo() {
return inject(FOO);
}
import { TestBed } from '@angular/core/testing';
describe('Foo', () => {
it('should get ', () => {
TestBed.overrideProvider(FOO, { useValue: '' });
const result = TestBed.runInInjectionContext(getFoo);
expect(result).toEqual('');
});
it('should get ', () => {
TestBed.overrideProvider(FOO, { useValue: '' });
const result = TestBed.runInInjectionContext(getFoo);
expect(result).toEqual('');
});
});
import { TestBed, fakeAsync } from '@angular/core/testing';
describe('Bar', () => {
it('should work with fakeAsync', fakeAsync(() => {
TestBed.overrideProvider(BAR, { useValue: Promise.resolve('') });
let result = '';
TestBed.runInInjectionContext(getBar).then((v) => {
result = v;
});
flushMicrotasks();
expect(result).toEqual('');
}));
});
TestBed.inject(EnvironmentInjector).runInContext(getUsers);
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)