javascript - 抛出错误但 Jest 的 `toThrow()` 没有捕获错误

标签 javascript unit-testing ecmascript-6 jestjs

这是我的错误代码:

 FAIL  build/__test__/FuncOps.CheckFunctionExistenceByString.test.js
  ● 
    expect(CheckFunctionExistenceByStr(
      'any string', 'FunctionThatDoesNotExistsInString'
    )).toThrow();


    Function FunctionThatDoesNotExistsInString does not exists in string.

      at CheckFunctionExistenceByStr (build/FuncOps.js:35:15)
      at Object.<anonymous> (build/__test__/FuncOps.CheckFunctionExistenceByString.test.js:12:51)
          at new Promise (<anonymous>)
          at <anonymous>

如您所见,错误确实发生了:Function FunctionThatDoesNotExistsInString does not exists in string.。然而,它不会被 Jest 捕获为通行证。

这是我的代码:

test(`
    expect(CheckFunctionExistenceByStr(
      'any string', 'FunctionThatDoesNotExistsInString'
    )).toThrow();
  `, () => {
    expect(CheckFunctionExistenceByStr(
      'any string', 'FunctionThatDoesNotExistsInString'
    )).toThrow();
  }
);

最佳答案

expect(fn).toThrow() 需要一个 fn 函数,调用时 会抛出异常。

但是您正在立即调用 CheckFunctionExistenceByStr,这会导致函数在运行断言之前抛出异常。

替换

test(`
    expect(CheckFunctionExistenceByStr(
      'any string', 'FunctionThatDoesNotExistsInString'
    )).toThrow();
  `, () => {
    expect(CheckFunctionExistenceByStr(
      'any string', 'FunctionThatDoesNotExistsInString'
    )).toThrow();
  }
);

test(`
    expect(() => {
      CheckFunctionExistenceByStr(
        'any string', 'FunctionThatDoesNotExistsInString'
      )
    }).toThrow();
  `, () => {
    expect(() => {
      CheckFunctionExistenceByStr(
        'any string', 'FunctionThatDoesNotExistsInString'
      )
    }).toThrow();
  }
);

关于javascript - 抛出错误但 Jest 的 `toThrow()` 没有捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47397208/

相关文章:

javascript - Object.keys 在 typescript 中使用数字

javascript - 是否有任何版本的 PhantomJS 支持 javascript 生成器?

javascript - 根据给定索引突出显示字符串

python - 当深度嵌套多个依赖项时如何模拟 Python 类

javascript - JavaScript map 对象是否被索引以优化 map.get?

c# - 您如何对旨在与数据对话的类进行单元测试?

java - 测试模块中的文件夹结构

javascript - 取消ajax()成功

javascript - 将 JavaScript 变量发送到片段着色器

Javascript 无法识别 SWT BrowserFunction