Javascript 如何测试中止的函数?

Javascript 如何测试中止的函数?,javascript,reactjs,unit-testing,jestjs,Javascript,Reactjs,Unit Testing,Jestjs,如果函数通过返回而中止,正确的测试方法是什么 myFunction (parameter) { if (typeof parameter === 'object') return // doing any stuff } 测试jestJS 如果函数通过返回而中止,正确的测试方法是什么 myFunction (parameter) { if (typeof parameter === 'object') return // doing any stuff } 你唯一能做的就

如果函数通过返回而中止,正确的测试方法是什么

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

  // doing any stuff
}
测试jestJS

如果函数通过返回而中止,正确的测试方法是什么

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

  // doing any stuff
}
你唯一能做的就是:

让函数根据代码路径返回不同的值,并测试返回值。如图所示,您的函数在两条路径上都没有返回值,因此调用它的结果是未定义的,但是如果执行任何操作都包括返回某些内容,并且某些内容保证不会未定义,您可以对此进行测试

测试该功能是否有任何副作用


例如,除非您提供一种了解函数内部发生了什么的方法,否则无法从函数外部进行判断。

函数将始终返回-除非它以正确的方式中止抛出异常。若函数因异常而正确中止,则可以断言是否引发了该异常

如果您想测试某个方法是否对该方法中的特定代码行执行。假设您有jasmine,您可以在执行行内的对象上创建一个间谍,并使用断言测试该间谍


否则,没有真正的方法通过返回来区分中止-除非函数预期返回某个内容而不返回任何内容

间谍是否至少能够检测到它已被调用,并且函数按预期返回未定义?Icepickle:Yes-但引用函数中的两个路径都返回未定义,或者更准确地说:两个路径都没有返回值,因此调用函数会导致未定义。在当前示例中,为True,它也不会在if路径后显示返回值,但这可能是op:@Icepickle:Right的欠规范,如果是,则为上面的1:-