具有以下 NgRX 效果
loadData$: Observable<any> = createEffect((): Observable<Action> => {
return this.actions$.pipe(
ofType(loadDataStarted),
switchMap(() => {
return timer(0, 10000).pipe(
switchMap(() => this.dataService.loadNewData().pipe(
)),
);
}),
);
});
在模擬所有要求后嘗試測驗是否呼叫了 dataService.loadNewData() ,但測驗將失敗
beforeEach(() => {
service.loadNewData.and.returnValue(of(data));
});
it('should call service', fakeAsync(() => {
tick(10000)
expect(service.loadNewData).toHaveBeenCalledOnceWith();
}));
我如何正確模擬這種情況
uj5u.com熱心網友回復:
您似乎在實際測驗(it塊)之外執行了對效果的訂閱。這意味著訂閱存在于計時器之外,因此沒有任何效果。fakeAsynctick(..)
要解決這個問題,請確保在fakeAsync測驗塊內設定所有內容。
一般建議是為此使用大理石測驗:https ://ngrx.io/guide/effects/testing#marble-diagrams
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/516736.html
下一篇:如何處理前一個物件的變化
