Как сказал @Garth Mason, вы можете проверить, вызывались ли действия с потоками действий .
1. Создать переменную actions$
describe('control-center.state', () => {
let actions$: Observable<any>;
// ...
});
2. Инициализируйте переменную actions$
с наблюдаемой
// ...
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
NgxsModule.forRoot([AppState]),
NgxsModule.forFeature([ControlCenterState])
]
});
store = TestBed.get(Store);
actions$ = TestBed.get(Actions);
})
// ...
3. Проверьте, если действия называются
Отфильтруйте свои действия из потока с помощью операторной функции ofActionsDispatched()
и воспользуйтесь выполненным обратным вызовом.
// ...
it('should call actions ResetStateAction and LogoutAction', async( () => {
store.dispatch([new ResetStateAction(), new LogoutAction()]);
actions$.pipe(ofActionDispatched(ResetStateAction, LogoutAction))
.subscribe((actions) => {
expect(actions).toBeTruthy();
});
}));
// ...
Эта спецификация не запустится, пока не будет вызвана функция done в вызове beforeEach выше. И эта спецификация не будет завершена, пока не будет вызвано ее действие.
Из документации Жасмин .