我目前正在为减速器进行测试。 但是在一个reducer上,我内部调用了一个函数来解决我的状态。 问题在于测试该函数不会返回任何内容,我必须对其进行模拟才能测试我的reducer。我尝试了几件事,但是没有运气,经过数小时的搜索和尝试不同的选择,我没有想法。我正在使用Jest和Angular。
reducer和功能的代码为:
case ConfigurationActionTypes.GetResumePage: {
const resumePageData = getResumePageData(state);
return {
... state, resumePage: {
... resumePageData
}
};
}
default:
return state;
} }
export function getResumePageData(state: ConfigureState): ResumeConfigurationModelUI { //Logic of the ResumePage a little bit long to copy to here }
现在的测试代码:
it('should generate the resume page with the added sensor', () => {
const sensorList: SensorModelUI[] = mockSensorModelUI.buildList(3);
const actionToAddSensors = new GetSensorsSuccess(sensorList);
const stateWithAddedSensors = reducer(initialState, actionToAddSensors);
const addedSensor: SensorModelUI = mockSensorModelUI.build({Id: 10});
const actionToAddNewSensor = new AddSensorSuccess(addedSensor);
const stateWithNewSensor = reducer(stateWithAddedSensors, actionToAddNewSensor);
const actionToGetResumePage = new GetResumePage({});
const result = reducer(stateWithNewSensor, actionToGetResumePage);
expect(result).toEqual({
... stateWithNewSensor,
resumePage: {
... stateWithNewSensor,
addedSensors: [addedSensor]
}
});
});
});
基本上,当我创建调用reducer函数的结果变量以及对GetResumePage的操作时,他什么也不创建,并且始终返回相同的空对象。
所以我想我需要定义一些模拟,该模拟返回调用getResumePageData函数时的预期结果。 任何帮助,将不胜感激。 谢谢。