javascript - 尝试在 then 中测试我的 catch block 没有成功

标签 javascript node.js typescript unit-testing

我是单元测试代码的新手,迷路了!我正在尝试为以下函数抛出错误以覆盖 catch block ,但没有成功,我不知道为什么。

功能:

public initialize(): Promise<this> {
    return Promise.resolve()
      .then(() => this.getQueries())
      .catch((error: Error) => {
        this.connector.localLog.error(error, 'Failed to initialize Rest Poller Launcher:');
        throw error;
      });
  }

单元测试:

it('should getQueries return error', () => {
  launcher.initialize()
    .then(() => {
      this.getQueries = stub().throws('TypeError');
    })
    .catch((error: Error) => {
      expect(error.message).equals('Failed to initialize Rest Poller Launcher:');
    });
});

请帮帮我

最佳答案

您需要在 Promise 解析之前对函数进行 stub 。 尝试:

it('should getQueries return error', () => {
launcher.getQueries = stub().throws('TypeError');
launcher.initialize()
.then(() => {
// this should not happen
})
.catch((error: Error) => {
  expect(error.message).equals('Failed to initialize Rest Poller Launcher:');
});

关于javascript - 尝试在 then 中测试我的 catch block 没有成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55578973/

相关文章:

javascript - Bootstrap Select2 在键入任何单词之前不会在粘贴时触发选择事件

javascript - 表单元素已禁用 : Contain Form within a bootstrap popover embedded in Modal

javascript - 通过javascript启动redis服务器?

node.js - 如何使用 Firebase 管理 Node JS SDK 取消电子邮件与 Firebase 的链接

node.js - 消耗所有可用内存的 Node 脚本

node.js - typescript 忽略 NODE_PATH 变量

angular - 如何对在 Angular 中使用 Router 的组件进行单元测试?

javascript - SelectAll 不调用事件处理程序

javascript - jQuery 选择值失败

javascript - 如何使用API​​结果作为对象的属性?