Tengo esta muestra de clase que usa ngrx store y otros servicios en el constructor. ¿Cuál es la mejor manera de pasar la tienda en el constructor cuando estoy probando esta clase en broma?
Esta clase no es un componente o inyectable.
export class Sample { private users; constructor( private readonly userService: UserService, private readonly store: Store ) { } public setUsersDataFromStore() { this.store.select(selectUsers).pipe( filter((user) => !!users), tap((users => (this.users = users))) ).subscribe(); } }Prueba de unidad.
fit('should Sample Object defined', () => { const sampleObj = new Sample( mockUserService any, initialState as any ); sampleObj.setUsersDataFromStore(); expect(sampleObj.users).toBeDefined(); });Pero la prueba unitaria está fallando, el selector no obtiene los datos del estado inicial del constructor, el estado inicial es un objeto simple, también probé con el objeto en un observable de ({initialState}), cuál es la mejor opción ¿arreglar?
Puede usar getMockStore para crear una instancia simulada de la tienda, lo menciono brevemente sobre este tema en mi publicación de blog Prueba de un proyecto NgRx .
new Sample( mockUserService, getMockStore({ initialState, }); )