При написании теста для промежуточного программного обеспечения:
export const myMiddleware = ({getState, dispatch}) => next => action => {
console.log("action.type:", action.type) // 'NOTHING'
console.log("action.type compare:", action.type=== 'targetedAction') // this is false
next(action)
if(action.type === 'targetedAction') {
console.log("in if:" )
const state = getState()
const data = getData(state)
data.forEach( => { /*do something */ }) )
}
}
Код Jest:
it('should pass the intercepted action to next', () => {
const fakeNext = {fakeMethod(){return true}};
const spy = jest.spyOn(fakeNext,'fakeMethod');
const fakeStore = {
dispatch: {},
getState: jest.fn()
};
const action = { type: 'NOTHING' };
myMiddleware(fakeStore)(spy)(action);
expect(spy).toHaveBeenCalledWith(action)
});
Когда я пытался запустить тест, он пытается выполнить код, который находится внутри условия if, и выдает ошибку. Поскольку мой тест предназначен только для того, чтобы убедиться, что next (действие) было выполнено, а action.type не соответствует ожидаемому, не должен ли он обойти условие if и пройти тест?
В настоящее время выдает ошибку при выполнении getData (состояние).