Prueba de funciones DI en Angular
Dec 11 2022
Se agregó un nuevo método estático llamado runInInjectionContext a TestBed en Angular v15.1.
runInInjectionContextSe agregó un nuevo método estático llamado TestBeden Angular v15.1.0-next.0 para facilitar las pruebas inject(). La runInInjectionContextfunción funciona de manera similar a la runInContextfunción. Digamos que tenemos una función que usa el httpmódulo para buscar usuarios:
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);

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































