Почему Jest выполняет код, который не входит в сферу? - PullRequest
0 голосов
/ 06 ноября 2018

При написании теста для промежуточного программного обеспечения:

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 (состояние).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...