I am writing jest test cases for simple @ngrx effect
the action
export const createMultiHost = createAction(
`${actor} Create MultiHost Source`,
props<{
source: MultiHostSource;
}>()
);
export const createMultiHostSuccess = createAction(
`${actor} Create MultiHost Source Success`,
props<{ createdSource: MultiHostSource }>()
);
effect:
create$ = createEffect(() =>
this.actions$.pipe(
ofType(createMultiHost),
switchMap(({ source }) => {
return this.multiHostApiService.create(MultiHostUtil.transformMultiHostModelToRequest(source)).pipe(
map(successResponse => {
return createMultiHostSuccess({ createdSource: successResponse });
}),
catchError(error => of(createMultiHostFailure({ errorResponse: error })))
);
})
)
);
effect jest test (effect.spec.ts)
describe('MultiHostEffects', () => {
let effects: MultiHostEffects;
let actions: Subject<any>;
let multiHostService: MultiHostService;
let alertService: AlertsToasterService;
let modalService: ModalService;
let store: MockStore;
let router: Router;
let actions$: any;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
HttpClientTestingModule,
AlertsToasterModule,
ModalModule,
RouterTestingModule,
TranslateModule.forRoot()
],
providers: [
ApiDownloadService,
ApiAuthenticationService,
CryptoService,
FeatureFlagService,
MultiHostEffects,
LogService,
{ provide: multiHostService, useValue: new MockMultiHostService() },
provideMockStore(),
{
useValue: {
listByIds() {}
}
},
SessionService,
provideMockActions(() => actions)
]
});
actions = new Subject<any>();
alertService = TestBed.inject(AlertsToasterService);
modalService = TestBed.inject(ModalService);
multiHostService = TestBed.inject(MultiHostService);
store = TestBed.inject(Store);
router = TestBed.inject(Router);
});
describe('Create', () => {
const multiHost = new MultiHostSource();
beforeEach(() => {
multiHost.name = 'Test Name';
multiHost.type = 'MultiHost - Microsoft SQL Server',
//store.overrideSelector(selectMul, multiHost);
effects = TestBed.inject(MultiHostEffects);
});
it('should create and dispatch a success action', done => {
jest.spyOn(multiHostService, 'create').mockReturnValue(of(multiHost));
actions$ = new ReplaySubject();
actions$.next(createMultiHostSuccess);
effects.create$.subscribe(action => {
console.log('***************')
expect(multiHostService.create).toHaveBeenCalled();
expect(action).toEqual(createMultiHostSuccess);
done();
});
});
This test is failing with timeout error
thrown: "Exceeded timeout of 5000 ms for a test. Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test."
86 | }); 87 | > 88 | it('should create and dispatch a success action', done => { | ^ 89 | jest.spyOn(multiHostService, 'create').mockReturnValue(of(multiHost)); 90 | 91 | actions$ = new ReplaySubject();
what I am doing wrong here?