Как правильно проверить, прерывается ли функция возвратом?

myFunction (parameter) {
  if (typeof parameter === 'object') return

  // doing any stuff
}

Тест (jestJS)

it('myFunction() should return if no valid parameter is passed', () => {
  // SETUP
  wrapper = shallow(<Component />)
  // EXECUTE
  wrapper.instance().myFunction(undefined)
  // VERIFY
  // ??
})
0
user3142695 1 Янв 2018 в 13:31

2 ответа

Лучший ответ

Как правильно проверить, прерывается ли функция возвратом?

Единственное, что вы можете сделать, это:

  1. Функция должна возвращать разные значения в зависимости от пути кода и проверять возвращаемое значение. (Показанная функция не имеет возвращаемого значения ни по одному из путей, поэтому результатом ее вызова будет undefined, но если doing any stuff включает return something и something гарантировано не быть undefined, вы можете проверить это.)

  2. Проверьте наличие побочных эффектов функции.

Например, если вы не предоставите средства узнать, что произошло внутри функции, это невозможно сказать извне.

1
T.J. Crowder 1 Янв 2018 в 10:35

Функция всегда будет возвращаться, если только она не вызовет исключение (правильный способ прерывания). Если функция завершается правильно с исключением, можно утверждать, было ли это исключение выброшено или нет.

Если вы хотите проверить, выполняется ли метод для определенной строки кода внутри метода. Предполагая, что у вас есть жасмин на борту, вы можете создать шпиона для объекта в строке выполнения и проверить этого шпиона с помощью утверждений.

В противном случае нет реального способа отличить прерывание по возврату - если только функция не должна что-то возвращать и ничего не возвращает.

0
Tjad Clark 1 Янв 2018 в 10:37