nuevo - instalar angular 5
No se puede leer la propiedad ''suscribir'' de indefinido después de ejecutar la prueba npm(prueba de unidad Angular 2) (1)
Suponiendo que tiene un servicio que tiene un método que devuelve un observable, digamos
class SomeService {
getData(): Observable<Data> {}
}
Tú podrías....
Cree spy1 donde devuelva un objeto con una función de suscripción noop.
let mockSomeService = {
getData: () => {}
}
TestBed.configureTestingModule({
providers: [
{ provide: SomeService, useValue: mockSomeService }
]
})
it(''...'', () => {
spyOn(mockSomeService, ''getData'').and.returnValue({ subscribe: () => {} })
// do stuff
expect(mockSomService.getData).toHaveBeenCalled();
})
Tú podrías...
Devolver un observable real en el espía.
spyOn(mockSomeService, ''getData'').and.returnValue(Observable.of(someData))
Tal vez esto sea preferible al método de suscripción noop, porque si la llamada en el servicio está cambiando algo en el componente, esto es algo que probablemente querrá probar.
Tú podrías...
Haz algo como en este post . Esto es lo que yo solía hacer. Es solo una cuestión de preferencia.
He creado un archivo de prueba (espec.) Para un componente que estoy probando. Pero cuando ejecuto la prueba, me da un error diciendo
Cannot read property ''subscribe'' of undefined
TypeError: Cannot read property ''subscribe'' of undefined
at ComponentUndertest.ngOnInit
lo cual es obvio porque me suscribí a algo en mi método ngOnInit (), pero ¿puedo ignorar la suscripción durante la prueba? ¿O puedo falsificar una suscripción durante las pruebas? He buscado mucho en Google sobre este problema, pero no pude encontrar nada relacionado con las pruebas angulares2. Gracias por adelantado.