我正在编写的Jasmine Marble测试是为数组中的每个元素调用一次Observable,而我希望它调用一次Observable并传递整个数组。
这是测试代码;
it('sends an action when fetching the conversion list', () => {
const service_response = [CONVERSION_1, CONVERSION_2];
const action = new ConversionActions.ConversionFetchList({ timestamp: 0 });
const outcome = new ConversionActions.ConversionUpdatesReceived({ items: service_response });
actions = hot('-(a|)', { a: action });
const response = cold('-a|', { a: service_response });
conversion_service.get_conversions.and.returnValue(service_response);
const expected = cold('--b', { b: outcome });
expect(effects.conversion_fetch_list$)
.toBeObservable(expected);
});在调试过程中,我看到observable被调用了两次:一次用于CONVERSION_1,另一次用于CONVERSION_2,但它需要做的是使用转换数组调用观察者一次。
发布于 2019-04-12 18:30:55
问题似乎是由模拟的服务调用引起的:
conversion_service.get_conversions.and.returnValue(service_response);这就是打破数组,一次返回一个元素。将其更改为:
conversion_service.get_conversions.and.returnValue([service_response]);似乎解决了这个问题,并告诉模拟将service_response作为单个实体返回。
https://stackoverflow.com/questions/55641304
复制相似问题