proyecto nuevo instalar ejecutar crear cli angular angular2-testing

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.

1 - Ver más sobre espías

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.