首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mocha在Test expect错误条件下抛出Promise rejection错误。如何解决这个问题?

在Mocha中,当使用Test expect断言库时,如果错误条件下抛出Promise rejection错误,可以通过以下方法解决:

  1. 使用async/await:将测试函数声明为async函数,并在测试代码中使用await关键字来等待Promise的解决或拒绝。这样可以确保在断言失败时正确处理Promise rejection错误。例如:
代码语言:txt
复制
it('should pass the test', async () => {
  await expect(Promise.reject('error')).to.be.rejectedWith('error');
});
  1. 使用return语句:在测试函数中使用return语句返回Promise对象,并在测试代码中使用.then()和.catch()方法来处理Promise的解决或拒绝。这样可以确保在断言失败时正确处理Promise rejection错误。例如:
代码语言:txt
复制
it('should pass the test', () => {
  return expect(Promise.reject('error')).to.be.rejectedWith('error');
});
  1. 使用done回调函数:在测试函数中接受一个done回调函数参数,并在Promise的解决或拒绝时调用done()函数。这样可以告诉Mocha等待异步操作完成。例如:
代码语言:txt
复制
it('should pass the test', (done) => {
  expect(Promise.reject('error')).to.be.rejectedWith('error').notify(done);
});

以上是解决Mocha在Test expect错误条件下抛出Promise rejection错误的几种常见方法。根据具体情况选择适合的方法来处理错误,并确保测试代码能够正确捕获和处理Promise rejection错误。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

测试框架 Mocha 实例教程

expect(add(1, 1)).to.be.equal(2); 所谓"断言",就是判断源码的实际执行结果与预期结果是否一致,如果不一致就抛出一个错误。...头部是expect方法,尾部是断言方法,比如equal、a/an、ok、match等。两者之间使用to或to.be连接。 如果expect断言不成立,就会抛出一个错误。...事实上,只要不抛出错误,测试用例就算通过。 it('1 加 1 应该等于 2', function() {}); 上面的这个测试用例,内部没有任何代码,由于没有抛出错误,所以还是会通过。...$ mocha -t 10000 async.test.js 另外,Mocha内置对Promise的支持,允许直接返回Promise,等到它的状态改变,再执行断言,而不用显式调用done方法。...请看promise.test.js。

2.2K50

异步函数中的异常处理及测试方法

这个话题已被反复提起过几百次,不过这次让我们从TDD的角度来回答它。 如果你能够不在Stackoverflow上搜索就能回答这个问题,会给我留下深刻的印象。 如果不能的话也可以变得很酷。...果然不出所料,异步方法返回了一个Promise rejection,从严格意义上来讲,并没有抛出什么东西。错误被包含在了Promise rejection中。...看把你能的,来抓我啊 从严格意义上讲异步函数和异步方法不会抛出错误。异步函数和异步方法总是返回一个Promise,无论它已完成还是被拒绝,你必须附上 then() 和 catch(),无论如何。...总结 最后总结一下: 从异步函数抛出错误不会是“普通的异常”。 异步函数和异步方法总是返回一个Promise,无论是已解决还是被拒绝。 要拦截异步函数中的异常,必须使用catch()。...以下是Jest中测试异常的规则: 使用 assert.throws 来测试普通函数和方法中的异常 使用 expect + rejects 来测试异步函数和异步方法中的异常 如果你对如何使用 Jest

2.9K30

NodeJS中的异步编程经验

问题引入:今天 Gulp 构建任务中出现一个 html 解析错误,但是并没有报错,也没有中断 gulp 构建任务的执行,而是出现 UnhandledPromiseRejectionWarning 的警告...,所以会误以为构建成功,这篇文章将对此进行探究并解决问题。... Node.js 6.6.0 中增加了一个特性:对 Promise 中未处理的 rejection 默认会输出 UnhandledPromiseRejectionWarning 提示 例如:test.js...unhandledRejection 事件 node process 中有一个 unhandledRejection 事件,当没有对 Promiserejection 进行处理就会抛出这个事件...的警告 解决问题 最后解决一下文章开头的问题:构建任务中 html 解析错误,出现了一个 Unhandled Rejection,所以我们可以添加一个 unhandledRejection 事件监听,

1.7K20

使用mocha编写node服务单元测试

/**/*.test.js', // 运行test目录下的所有单测代码 } 编写单测 完成mocha的插件配置和环境搭建后,终于到了写代码环节了。...而测试用例中如何来判断函数是否正常执行呢?这时候就要用到断言了。 chai断言库 mocha可以搭配你喜欢的任何断言库,经常使用到的有chai断言库。...mocha提供了两种方法来解决这个问题promise 我们可以返回一个promisemocha框架,等到promise的状态改变时再执行断言: it('测试异步函数', function() {...当我们的异步逻辑耗时较长时,需要手动地调整这个超时时间。 我们可以mocha启动时传入timeout参数,或者测试用例中显示声明该测试用例的超时时间。...我们也可以让替换函数主动抛出错误,来测试调用它的函数是否可以正确处理异常: it('测试db操作失败', async function(){ const stub = sinon.stub(db,

3.9K20

web前端好帮手 - Jest单元测试工具

本文介绍如何使用Jest覆盖Web前端单元测试、如何统计测试覆盖率,Jest对比Mocha等内容。 Jest是什么? ? Jest是一个令人愉快的 JavaScript 测试框架,专注于简洁明快。...,这个过程繁琐并且容易出问题。...以至于我每次想写Mocha单元测试时,都要花半天去重读他的文档,这个过程让我逐渐地变得“害怕”写单元测试。...});// 错误写法test('必要参数uid漏传报错', () => { expect(fetchUserInfo()).toThrow(); }); 注意测试错误抛出时,要在测试逻辑外加一层函数包裹...所以推荐大家用.toMatchSnapshot([快照名称])给快照设置命名,差异对比就能一眼看出是哪句测试代码出问题了,也不会有维护的问题。 React组件如何覆盖测试?

4.9K40

为ES6配置JavaScript测试工具

Mocha中谨慎使用箭头函数 Mocha中请谨慎使用箭头函数。某些情况下你需要使用this.timeout来控制一个测试超时之前的等待时间。如果你使用了箭头函数,那这个配置就不会生效。...避免Sinon中使用箭头函数 与Mocha类似,Sinon.js中使用箭头函数也可能导致问题问题出在sinon.test上。...类似,这个stub会自动被清理 var stub = sandbox.stub(); }); Mocha自带Promise支持 使用Mocha测试使用了ES6 Promise的代码就是小菜一碟。...Mocha内置了对Promise的支持,因此你可以一个测试中返回一个Promise。...由于打包后的文件包含了所有的代码,要想找到是哪个文件产生的问题变得很困难。 要解决这个问题,你可以在打包时开启source maps。

2.9K20

Node 脚本遭遇异常时如何安全退出

一些重要流程中能够看到脚本的身影: CI,用以测试、质量保障及部署等 Docker,用以构建镜像 Cron,用以定时任务 如果在这些重要流程中脚本出错无法及时发现问题,将有可能引发更加隐蔽的问题。... POSIX 中,0 代表正常的返回码,1-255 代表异常返回码,一般主动抛出错误码都是 1。 Node 应用中使用 process.exitCode = 1 来代表因不期望的异常而中断。...+++ exited with 1 +++ 从系统调用的最后一行可以看出,该进行的 exit code 是 1,并把错误信息输出到 stderr (标准错误的 fd 为 2) 中 如何查看 exit code...脚本解决方案 能在编译时能发现的问题,绝不要放在运行时。...= 1 }) 构建镜像时,也有关于异常解决方案的建议: ❝(node:1) UnhandledPromiseRejectionWarning: Unhandled promise rejection

1.7K30

JS原生引用类型解析7-Promise类型

用同步的写法解决异步问题,代码直观,易于理解维护,解决了回调地狱的问题。关于Promise的详细讲解和更多用例我会开专门文章讨论。这里我们主要看一下Promise及其原型的属性和方法。 2....这个新的promise对象触发成功状态以后,会把一个包含iterable里所有promise返回值的数组作为成功回调的返回值,顺序跟iterable的顺序保持一致;如果这个新的promise对象触发了失败状态...如果then中的回调函数抛出一个错误,那么then返回的Promise将会成为拒绝状态,并且将抛出错误作为拒绝状态的回调函数的参数值。...}); // 异步函数中抛出错误不会被catch捕获到 var p2 = new Promise(function(resolve, reject) { setTimeout(function...; }, 1000); }); p2.catch(function(e) { console.log(e); // 不会执行 }); // resolve()后面抛出错误会被忽略 var

1.3K10

vue中关于测试的介绍

Vue中的单元测试中有( Jest +Karma+ Mocha(Chai) ) Karma: Karma是一 个基于Node.js的JavaScript测试执行过程管理工具( Test Runner)...需要它的原因在于,你的代码可能是设计浏览器端执行的,node环境下测试可能有些bug暴露不出来;另外,浏览器有兼容问题, karma提供了手段让你的代码自动多个浏览器( chrome,firefox...Mocha mocha(摩卡)是一个测试框架,vue-cli中配合。mocha本身不带断言卡,所以必须先引入断言库,Chai断言库实现单元测试。...断言库 所谓“断言” ,就是判断源码的实际执行结果与预期结果是否-致,如果不一致就抛出一个错误。下面这句断言的意思是,调用add(1, 1) ,结果应该等于2....,请仔细阅读) 官方提供的单元测试的模块@vue/test-utils,它使用的是Jest风格的expect断言,具体示例如下: // 挂载这个组件 const wrapper = shallowMount

95610

打造前端工程测试体系(1)

JavaScript 测试框架 Mocha 本文以 Mocha 为例,它是现在最流行的 JavaScript 测试框架(JavaScript test framework)之一。...若断言不为真时,程序会中止运行,并给出错误消息。 根据风格,断言库又区分为 TDD 风格 和 BDD 风格。...Chai 只是一个断言库,它的作用是用来测试脚本中编写断言。...总结 本文仅作为入门介绍了前端测试的基础知识,并且以 Mocha + Chai 为例,编写了相当简单的测试用例。 但这个用例太简单,太理想化了。...真实的项目环境中,还有很多问题都需要解决,比如: 如何用 es6 语法来写测试用例? 如果代码中有 DOM 操作怎么测试? 如何在不同浏览器中进行测试? 使用 React 等框架时怎么测试?

2.7K00

你没有抓住 Promises 的要点

rejection 部分的代码就像同步代码的副本一样,整个调用链中,fulfillment 部分会执行,也会在某个时候被 rejection 中断,但是只有预先声明了的 handler 才能处理它。...handler 抛出了异常:获取数据,然后再抛出异常 数据装填失败,rejection handler 返回了一个值:必须得用一个 catch 子句捕获异常并处理 数据装填失败,但是 rejection...如果你某个 handler 里面写一个叫做 aFunctionThatDoesNotExist() 的函数,你的 promise 对象失败以后会抛出异常,接着你的异常向上冒泡,外面最近的一个 rejection...值得注意的是,写这篇文章的时候,JQuery 的最新版本是 1.9.1,它的 promises 错误处理上的实现是完全错误的。...我希望接下去的 JQuery 2.0 版本中参考 Promises/A+的文档,修正这个问题

60710
领券