首页
学习
活动
专区
工具
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错误。

相关搜索:Firebase函数抛出错误:返回未定义、预期的Promise或value。我如何解决这个问题?在安装neovim时出现了Homebrew错误,如何解决这个问题?Power BI嵌入代码从服务器抛出403禁止错误。如何解决这个问题?我的QPainter既没有画线,也没有抛出错误,我如何解决这个问题?在安装neovim时出现了自制软件错误,如何解决这个问题?我的质数程序中的指数抛出一个内存错误,我如何解决这个问题?JS注入的代码显示在错误的位置-我如何解决这个问题?找不到模块出错:错误:无法解析‘../components/*’在构建时,如何解决这个问题?在赋值之前,我一直收到引用局部变量的错误!我该如何解决这个问题?在循环中使用lambda表达式会给我一个错误,我该如何解决这个问题?在使用python库rply时,我在解析多行代码时遇到意外的令牌错误。我该如何解决这个问题呢?我一直在sed中收到意外的标记`/bin/busybox.exe‘错误。我该如何解决这个问题?在调用Facebook的Marketing API时,我遇到了这个错误:“如果没有设置api,则无法进行api调用”。我该如何解决这个问题呢?我得到错误$(...).modal不是一个函数,即使引导是在jQuery之后导入的,我如何解决这个问题(使用npm版本)?此代码解释了如何使用Alamofire与swift.but的错误是“编辑器占位符在源文件”.How来解决这个问题?我的代码抛出了一个错误,我无法修复,我可以用什么方法解决这个问题,或者我如何能够更改它以使其正常工作?在Keras中使用自定义的步骤激活函数会导致“一个操作对渐变有`None`”。错误。如何解决这个问题?在我想要的文件夹中安装django之后,我使用了virtualenv venv命令,遇到了一个错误,如何解决这个问题在我的代码中输入一个需要int的字符串,我得到了一个java错误,我如何解决这个问题?如何解决这个问题,当我尝试在本地系统上进行身份验证时,它工作得很好,但当上传到heroku时,它返回错误500?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

测试框架 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.3K50

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

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

3K30
  • 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.8K20

    使用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,

    4K20

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

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

    5K40

    为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.8K30

    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

    如何构建一个 NodeJS 影院微服务并使用 Docker 部署

    前言 如何构建一个 NodeJS 影院微服务并使用 Docker 部署。在这个系列中,将构建一个 NodeJS 微服务,并使用 Docker Swarm 集群进行部署。...因此,“构建 NodeJS 电影目录微服务”系列中,将仅关注电影目录服务。 在这个架构中,可以看到有 3 种不同的设备使用该微服务,即 POS(销售点)、移动设备/平板电脑和计算机。...有一个 repository/repository.spec.js 文件来测试这个模块,稍后文章中会谈到测试。 接下来要看的是 server.js 文件。...注意 在这里,使用了一个事件发射器对象,因为使用 promise 的方法某种程度上并没有通过认证后返回 db 对象,顺序变得空闲。...下面是项目中需要用到的初始化以及运行命令: npm install # 设置Node依赖项 npm test # 使用mocha进行单元测试 npm start

    24622

    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

    97910

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

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

    2.7K00
    领券