Soy nuevo en las pruebas de Angular 2. Estoy tratando de averiguar cuál es la diferencia entre usar testsbed.get()
y solo usar inject
en el nivel de prueba.
p.ej:
beforeEach(() => { TestBed.configureTestingModule({ providers: [SomeService] }); const testbed = getTestBed(); someService= testbed.get(SomeService); }); });
contra
it('test service', inject([SomeService], (someService: SomeService) => {
Solo para agregar a la respuesta existente y si, como yo, encontró esta pregunta porque se pregunta cuál es la diferencia entre TestBed.get()
y TestBed.inject()
, que sé que no era exactamente lo que preguntó originalmente el OP, pero es relevante y está muy relacionado.
Pensé que valía la pena publicar que, según la última documentación de Angular, TestBed.inject()
es el tipo de reemplazo seguro de TestBed.get()
.
De la documentación de Angular en TestBed
que se puede encontrar aquí .
La función auxiliar de inject
se usó históricamente desde AngularJS como una alternativa a las llamadas de inyector directo. En Angular 1, era necesario arrancar una prueba con ngMock
. Es completamente opcional en Angular 2 y superior y es solo una forma sugerida para DI en las pruebas de TestBed.
Es un contenedor de conveniencia para testBed.get
que permite evitar múltiples llamadas a testBed.get
, de manera similar a:
const [foo, bar] = [Foo, Bar].map(TestBed.get);
Otras funciones auxiliares se pueden usar opcionalmente junto con inject
, a saber, async
y fakeAsync
.
Estos solían ser equivalentes, pero con Angular 9 el método preferido se convirtió en inject() .
TestBed.get()
está obsoleto en Angular 9+, y TestBed.inject()
es ahora la forma segura de tipos preferida para inyectar una dependencia.
Lea la documentación para mayor claridad: TestBed.get() y TestBed.inject() . El cambio es de desaprobación.