我创建了一个效果测试,但该测试始终通过
@Injectable()
export class myEffects {
@Effect()
getEffect$ = this.actions$.pipe(
ofType(MyactionTypes.Get),switchMap((action: Getaction) =>
this.myService
.get()
.map((data) => new GetSuccessaction(data))
.catch((res) => of(new GetFailedaction(res)))
)
);
constructor(private actions$: actions<Myactions>,public myService: MyService) {}
}
describe('myEffects',() => {
let actions$: ReplaySubject<any>;
let effects: myEffects;
let myService = {
get: jest.fn()
};
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
myEffects,provideMockactions(() => actions$),{
provide: MyService,useValue: myService
}]
});
effects = TestBed.get<myEffects>(myEffects);
});
it('aaa',() => {
const data = {};
myService.get.mockReturnValue(data);
actions$ = new ReplaySubject(1);
actions$.next(new Getaction());
effects.getEffect$.subscribe((action) => {
expect(action).toEqual({
type: MyactionTypes.GetFailed,payload: data
});
});
});
});
仅当效果触发器的类型为GetSuccess时,测试才应通过,但将期望类型设置为GetFailed-测试也将通过。 请帮忙。 谢谢