javascript - 引发错误时,单元测试无法通过

我有以下JS类:

class MyDispatcher {

  subscribe(eventName, handler) {

    if (typeof eventName !== 'string') {
        throw new Error('eventName must be a string');
    }

   //some other code
  }

}


我有这个Jest单元测试:

test('Non string event fails', () => {
    expect(MyDispatcher.subscribe(3, 'myHandler')).toThrow();
});


问题是,当我运行测试时,它失败并显示以下错误:

● myDispatcher › Non string event fails

    eventName must be a string

      at MyDispatcher.subscribe (src/modules/MyDispatcher.js:10:7)
      at Object.<anonymous> (src/modules/__tests__/MyDispatcherTest.js:26:31)


我不明白为什么测试失败。该方法将引发错误,这正是我正在测试的错误。因此,测试应该通过,对吧?

我也尝试了这个测试:

expect(MyDispatcher.subscribe(3, 'myHandler')).toThrowError('eventName must be a string');


和这个测试:

expect(MyDispatcher.subscribe(3, 'myHandler')).toThrow(new Error('eventName must be a string'));


但是,它们都失败,并显示相同的错误消息。

知道为什么这些测试失败了吗?

最佳答案

MyDispatcher.subscribe(3, 'myHandler')函数调用在执行实际测试之前就引发异常,请替换

expect(MyDispatcher.subscribe(3, 'myHandler')).toThrow();




expect(() => MyDispatcher.subscribe(3, 'myHandler')).toThrow();

本文翻译自 https://stackoverflow.com/questions/47349989/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 javascript reactjs jest


相关文章:

javascript - 如何获取在单个页面中使用/调用的javascript方法列表?

javascript - 反应导航:从儿童导航

javascript - 用户Material-UI React字体图标

unit-testing - 用玩笑测试Vue过滤器

javascript - 使用外部插件在react-native中使用Jest测试用例错误

reactjs - 如何使用提取API请求测试动作创建者

javascript - 无法通过for-in循环寻找价值

javascript - 使用REST API将文件上传到Firebase存储

javascript - 如何在另一个函数之前执行函数

javascript - React和Typescript:不传递任何道具时的类约定