在Angular NgRx中进行Marble测试时出现这个错误的原因可能是由于在测试中未正确设置和订阅Observables。下面是一种可能的解决方法,其中包含了代码示例:
import { TestScheduler } from 'rxjs/testing';
import { provideMockActions } from '@ngrx/effects/testing';
import { hot, cold } from 'jasmine-marbles';
let scheduler: TestScheduler;
beforeEach(() => {
scheduler = new TestScheduler((actual, expected) => {
expect(actual).toEqual(expected);
});
});
it('should return an empty array', () => {
scheduler.run(({ cold, expectObservable }) => {
const actions = cold('-a', { a: myAction }); // 触发一个动作
const expected = cold('-b', { b: [] }); // 期望返回一个空数组
// 在这里调用你的NgRx效果并传入actions
expectObservable(effects.yourEffectMethod$).toBe(expected);
});
});
注意:在这个示例中,myAction
是一个模拟的NgRx动作对象,yourEffectMethod$
是你要测试的NgRx效果的Observables。
通过这种方式,你可以使用测试调度器和jasmine-marbles来模拟和验证NgRx效果中的Observables的行为。这样可以确保你的测试符合你的预期,并避免出现预期错误的问题。