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

使用Mocha + Chai测试promise是否如承诺的那样抛出/拒绝似乎不起作用

Mocha和Chai是JavaScript的测试框架,用于编写和运行测试用例。Mocha是一个灵活的测试框架,可以在浏览器和Node.js环境中运行。Chai是一个断言库,用于编写易读和可维护的测试断言。

在使用Mocha和Chai测试promise是否如承诺的那样抛出/拒绝时,需要使用异步测试的方式。以下是一个示例代码:

代码语言:txt
复制
const assert = require('chai').assert;

describe('Promise', function() {
  it('should resolve as expected', function() {
    return new Promise((resolve, reject) => {
      resolve('success');
    }).then(result => {
      assert.equal(result, 'success');
    });
  });

  it('should reject as expected', function() {
    return new Promise((resolve, reject) => {
      reject(new Error('failure'));
    }).catch(error => {
      assert.equal(error.message, 'failure');
    });
  });
});

在上述示例中,我们使用Mocha的describe和it函数定义测试套件和测试用例。在每个测试用例中,我们创建一个Promise对象,并使用resolve或reject来模拟异步操作的成功或失败。然后,我们使用Chai的断言函数来验证Promise的行为是否符合预期。

对于测试promise是否如承诺的那样抛出/拒绝,我们使用了.then.catch方法来处理Promise的结果。在.then中,我们使用assert.equal断言函数来验证Promise是否成功并返回了预期的结果。在.catch中,我们使用assert.equal断言函数来验证Promise是否被拒绝,并返回了预期的错误信息。

关于Mocha和Chai的更多信息和用法,请参考以下链接:

腾讯云提供了一系列与云计算相关的产品,可以帮助开发者构建和管理云端应用。具体推荐的产品取决于具体的需求和场景。以下是一些与云计算相关的腾讯云产品:

  • 云服务器(CVM):提供可扩展的计算能力,用于部署和运行应用程序。产品介绍链接
  • 云数据库MySQL版(CDB):提供高可用、可扩展的关系型数据库服务。产品介绍链接
  • 云存储(COS):提供安全可靠的对象存储服务,用于存储和管理大规模的非结构化数据。产品介绍链接
  • 人工智能机器学习平台(AI Lab):提供丰富的人工智能算法和模型,帮助开发者构建智能化应用。产品介绍链接
  • 物联网开发平台(IoT Explorer):提供全面的物联网解决方案,用于连接、管理和控制物联网设备。产品介绍链接

请注意,以上仅是一些示例产品,腾讯云还提供了更多与云计算相关的产品和服务。具体推荐的产品取决于具体的需求和场景。

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

相关·内容

Nodejs中编写异步单元测试代码

使用测试框架是Mocha,断言库是Chai,那么今天我们就来聊聊在单元测试中,处理异步代码各种姿势。 处理promise const { query } = require('.....,这段代码就是测试数据库连接状态库,在断言库中我偏向于使用should类型,因为更加语义化,更符合TDD阅读习惯。...const { should } = require('chai'); ... should(); 在这样引用了should之后,是无法像刚才代码中那样使用should,为什么我会写出这样语法呢?...而去除done回调之后,直接写返回结果就好了,如果catch到了error,那么直接会被抛出测试失败。...'); chai.use(chaiAsPromised); chai.should(); /** * chai-as-promised库简单使用 */ describe('Mysql connect

1.4K10

测试框架 Mocha 实例教程

expect(add(1, 1)).to.be.equal(2); 所谓"断言",就是判断源码实际执行结果与预期结果是否一致,如果不一致就抛出一个错误。...上面代码引入断言库是chai,并且指定使用expect断言风格。 expect断言优点是很接近自然语言,下面是一些例子。...两者之间使用to或to.be连接。 如果expect断言不成立,就会抛出一个错误。事实上,只要不抛出错误,测试用例就算通过。...否则,Mocha就无法知道,测试是否结束,会一直等到超时报错。你可以把这行删除试试看。 Mocha默认会高亮显示超过75毫秒测试用例,可以用-s或--slow调整这个参数。...$ mocha -t 10000 async.test.js 另外,Mocha内置对Promise支持,允许直接返回Promise,等到它状态改变,再执行断言,而不用显式调用done方法。

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

    在编写代码前我们需要来了解下mocha运行规则,下面是一份测试加法运算函数单测代码: import getResult from 'add.js' import { assert } from 'chai...chai断言库 mocha可以搭配你喜欢任何断言库,经常使用chai断言库。 chai提供了多种风格语法去帮助我们判断函数执行结果。...mocha提供了两种方法来解决这个问题: promise 我们可以返回一个promisemocha框架,等到promise状态改变时再执行断言: it('测试异步函数', function() {...我们也可以让替换函数主动抛出错误,来测试调用它函数是否可以正确处理异常: it('测试db操作失败', async function(){ const stub = sinon.stub(db,...本身是一个比较简单测试框架,在此基础上,我们使用一些npm包来加强我们测试过程: nyc: 提供全面的测试覆盖率 chai: 多种风格断言判断 sinon: 用于模拟或者替换难以测试代码 superTest

    3.9K20

    为ES6配置JavaScript测试工具

    正如你可能知道那样,Babel自身用来把ES6新语法转变为旧JavaScript引擎可以理解格式,而babel-polyfill则会提供旧引擎中缺失ES6对象(例如Promise)和函数(例如...自带Promise支持 使用Mocha测试使用了ES6 Promise代码就是小菜一碟。...Mocha内置了对Promise支持,因此你可以在一个测试中返回一个Promise。...如何测试ES6 generators? Mocha支持Promise意味着当你需要测试带有Generator代码时,你可以使用来自co模块co.wrap方法。...使用ES6编写测试代码和不使用它时没什么两样。只要记住箭头函数可能导致问题就行了。 那么你该使用那个工具呢?我推荐Mocha。由于内建了对Promise支持,它对ES6测试支持是最好

    2.9K20

    Vue 测试速成班

    安装完成后,package.json 中将出现下面几个附加依赖项: •@vue/cli-plugin-unit-mocha: 使用 Mocha[3] 进行单元/集成测试插件•@vue/test-utils...: 单元/集成测试工具库[4]•chai: 断言库 Chai[5] 从现在开始,单元/集成测试文件可以使用 *.spec.js 后缀写在 tests/unit 目录中。...Mocha 没有内置断言库,所以我们必须使用 Chai :它可以设置对结果期望。Chai 有许多不同内置断言,但没有涵盖所有用例,缺失断言可以通过 Chai 插件系统导入。...axios.post 将返回一个 promise,该 promise 被解析为带有 body 属性对象。...这个插件扩展了 Chai to.have.been 属性和 to.have.been.calledWith 方法。 如果我们返回一个 Promise测试函数将变成异步

    2.7K10

    测试利器Mocha

    作用等同于使用'=='进行相等判断。actual为实际值,expected 为期望值。message为返回信息。 运行 Mocha:$ mocha 断言 断言(assert)指的是对代码行为预期。...mocha 允许开发者使用任意断言库,当这些断言库抛出了一个错误异常时,mocha将会捕获并进行相应处理。...断言库 Chai 是一个非常灵活断言库,它可以让你使用如下三种主要断言方式任何一种: assert: 这是来自老派测试驱动开发经典assert方式。...以下列举了 expect 常用主要方法: ok :检查是否为真 true:检查对象是否为真 to.be、to:作为连接两个方法链式方法 not:链接一个否定断言, expect(false).not.to.be...时说:mocha支持TDD/BDD 开发方式,结合 should.js、expect、chai、better-assert 断言库,能轻松构建各种风格测试用例。

    1.4K20

    如何做前端单元测试

    另外,报告显示超 80% 人认为单元测试可以有效提高质量,超 60% 人使用过 Jest 去编写前端单元测试,超 40% 的人认为单元测试覆盖率是重要且覆盖率应该大于 80%。...常见单元测试工具 目前用最多前端单元测试框架主要有 Mocha (https://mochajs.cn/)、Jest (https://www.jestjs.cn/),但我推荐你使用 Jest,因为.../sum.js function sum(a, b) { return a + b; } module.exports = sum; Mocha + Chai 方式 Mocha 需要引入 chai....toHaveLength 可以很方便用来测试字符串和数组类型长度是否满足预期 ....(3); }) .toThorw 能够让我们测试测试方法是否按照预期抛出异常 但是需要注意是:我们必须使用一个函数将被测试函数做一个包装,正如下面 getIntArrayWrapFn 所做那样

    3.3K20

    使用 TypeScript 和依赖注入实现一个聊天机器人

    我们将会使用: Node.js TypeScript Discord.js,Discord API包装器 InversifyJS,一个依赖注入框架 测试库:MochaChai和ts-mockito...mocha ts-mockito ts-node @types/chai @types/mocha 然后,将package.json中生成 `scripts 部分替换为: 1"scripts": {...简而言之,我们代码应该实现最佳实践( SOLID ),不隐藏依赖项,不使用静态方法。 此外,它不应该在运行时引入副作用,并且很容易模拟。...创建单元测试 现在我们已经正确地注入了依赖项,编写单元测试很容易。我们将使用 Chai 和 ts-mockito。不过你也可以使用其他测试器和模拟库。...主要区别在于这些测试依赖关系不会被模拟。但是,有些依赖项不应该像外部 API 连接那样进行测试。在这种情况下,我们可以创建模拟并将它们 rebind 到容器中,以便替换注入模拟。

    11.1K20

    使用 TypeScript 改造构建工具及测试用例

    答案肯定是有的,首先需要分析这些代码都是什么: Webpack打包时配置文件 一些简单测试用例(使用mochachai) 知道了是哪些地方还在使用JavaScript,这件事儿就变得很好解决了...为什么要在测试用例中使用 TypeScript 测试用例使用chai来编写,(之前Postman也是用chai语法) chai提供了一系列语义化链式调用来实现断言。...使用方式 如果是之前有写过mochachai童鞋,基本上修改文件后缀+安装对应@types即可。.../node_modules/mocha/bin/mocha -r ts-node/register test/number-comma.spec.ts # 如果直接这样写,会抛出异常提示 mocha...不是命令 mocha -r ts-node/register test/number-comma.spec.ts mocha有一点儿比较好是提供了-r命令来让你手动指定执行测试用例脚本所使用解释器,

    1.5K40

    JavaScript单元测试利器Jest+mocha+chai

    一:mocha介绍mocha是一款功能丰富javascript单元测试框架,它既可以运行在nodejs环境中,也可以运行在浏览器环境中。...同步代码测试比较简单,直接判断函数返回值是否符合预期就行了,而异步函数,就需要测试框架支持回调、promise或其他方式来判断测试结果正确性了。...mocha可以良好支持javascript异步单元测试mocha会串行地执行我们编写测试用例,可以在将未捕获异常指向对应用例同时,保证输出灵活准确测试结果报告。...chai 是一个针对 Node.js 和浏览器行为驱动测试测试驱动测试断言库,可与任何 JavaScript 测试框架集成。istanbul是一个 JavaScript 代码覆盖率检查库。...:npm i –g chai安装istanbul:npm install -g istanbul环境配置完事儿3.1:mocha+chai实例演练我们先来个简单小例子哈~先写个add.jsfunction

    54520

    大前端自动化工厂(5)—— 基于Karma+Mocha+Chai单元测试和接口测试

    2.2 Mocha Mocha是前端自动化测试框架,测试框架需要解决兼容不同风格断言库,测试用例分组,同步异步测试架构,生命周期钩子等框架级能力。...基于Chai自动化单元测试 单元测试原理并不算复杂,相当于另外编写了一套程序,把业务逻辑中脚本文件当做模块引入,模拟其运行环境(例如需要浏览器类型,全局变量等),然后使用一组或若干组覆盖不同使用场景参数来调用想要测试函数单元...,并判断函数返回结果是否和预期相同。...测试用例文件基本写法: var chai = require('chai');//引入断言库 var expect = chai.expect;//使用expect语法 //引用源代码中业务逻辑模块...使用Webpack + Karma + Mocha + Chai进行自动化测试(单元测试+代码覆盖率)方法可以查看《webpack4.0各个击破(9)——Karma篇》。 四.

    1.3K20

    前端单元测试总结_javascript单元测试

    测试用例做后盾,就可以大胆进行重构 2.前端相关单元测试技术 2.1 测试框架 目前,前端测试框架很多,像QUnit、jasmine、mocha、jest、intern等框架,这些框架各有特点,...development(BDD)风格测试框架,在业内较为流行,功能很全面,自带asssert、mock功能 mocha: node社区大神tj作品,可以在node和browser端使用,具有很强灵活性...,可以选择自己喜欢断言库,选择测试结果report intern: 看官方介绍该测试框架功能极其全面,似乎囊括了业内跟测试相关所有功能 2.2 断言库 chai:应该是目前组流行断言库了,支持TDD...3.单元测试技术实现原理 测试框架:判断内部是否存在异常,存在则console出对应text信息 断言库:当actual值与expect值不一样时,就抛出异常,供外部测试框架检测到,这就是为什么有些测试框架可以自由选择断言库原因...,只要可以抛出异常,外部测试框架就可以工作。

    1.5K20

    vue中关于测试介绍

    Vue-Cli 推荐两种测试分别是:端到端测试(E2E) 和 单元测试(Unit Test) 一、端到端(E2E): 端(消费端)到端(产品端)测试(E2E (End-to-End)), 它用来测试一个应用从头到尾流程是否和设计时候所想一样...Vue中单元测试中有( Jest +Karma+ Mocha(Chai) ) Karma: Karma是一 个基于Node.jsJavaScript测试执行过程管理工具( Test Runner)...mocha本身不带断言卡,所以必须先引入断言库,Chai断言库实现单元测试。...Mocha常用命令和用法不算太多,而Chai断言库可以看Chai.js断言库API中文文档,很简单,多查多用就能很快掌 握。...断言库 所谓“断言” ,就是判断源码实际执行结果与预期结果是否-致,如果不一致就抛出一个错误。下面这句断言意思是,调用add(1, 1) ,结果应该等于2.

    97010

    前端测试驱动开发模式(TDD)快速入门

    为了可以方便执行单元测试,可以加一个npm scripts,在package.jsonscripts中加入如下语句,表示使用mocha去执行test文件夹下js测试: "scripts":{ "...test": "mocha test/**/*.js" } 复制代码 在test中建立一个js文件,在文件中引入这些工具,为了连接sinon 和 chai,要使用到sinon-chai const chai...,可以使用throw出错误,再用assert捕获这个错误,这样可以比较方便测试入参是否符合预期。...throws }) 复制代码 使用sinon模拟函数 如果需要模拟一个函数,可以用sinon去模拟,使用方法:sinon.fake(),并且课已通过这个sinoncalled方法判断函数是否被执行...mocha,chai,sinon一些高级用法,还需要通过实践去学习。 另,本文只是对但纯js测试,react,vue和小程序都有他们自己ui测试方案。

    2.5K20

    前端单元测试那些事

    (Test Runner),让你代码自动在多个浏览器(chrome,firefox,ie等)环境下运行 Mocha - Mocha是一个测试框架,在vue-cli中配合chai断言库实现单元测试Mocha...+chai ) jest -Jest 是 Facebook 开发一款 JavaScript 测试框架。...开源一款 JS 单元测试框架,它也是 React 目前使用单元测试框架,目前vue官方也把它当作为单元测试框架官方推荐 。...官方文档 3.3 Jest常用断言 expect(1+1).toBe(2)//判断两个值是否相等,toBe不能判断对象,需要判断对象要使用toEqual expect({a: 1}).toEqual(...为了测试这个方法,我们应该做到: 我们不需要实际调用axios.get方法,需要将它mock掉 我们需要测试是否调用了axios方法(但是并不实际触发)并且返回了一个Promise对象 返回Promise

    4.3K40

    单元测试 & mocha 简述

    ,随着node发展,越来越多“非UI”前端代码出现 单元测试是保证代码质量重要环节之一,特别是这些代码是会提供给其他人使用时候,比如node插件,grunt插件等等 单元测试作用有许多,下面列举一些...: 保证代码可用 另一种纬度文档 方便迭代回归 驱动开发 2. mocha mocha是一个优秀js测试框架,在许多开源插件测试模块都可以看到它影子 它支持TDD/BDD等多种流行接口,也接受多种...Assertions,should.js/expect/chai/better-assert等,通过这些即可构建各种风格测试用例 2.1 BDD BDD(Behavior Driven Development...模块,node是assert模块 assertion模块核心原理就是利用异常,如果判断是对,则相安无事,如果错了,就会抛出一个异常 原生assertion模块在语意上可能不是很直白,因此,有许多开源...另外,当组件版本升级时候,功能可能变多了,那这时候相应测试用例也应该加上,一个优秀测试框架是应该很好支持轻易添加测试用例,比如mocha那样

    75310

    单元测试 & mocha 简述

    单元测试 & mocha 简述 1....,随着node发展,越来越多“非UI”前端代码出现 单元测试是保证代码质量重要环节之一,特别是这些代码是会提供给其他人使用时候,比如node插件,grunt插件等等 单元测试作用有许多,下面列举一些...: 保证代码可用 另一种纬度文档 方便迭代回归 驱动开发 2. mocha mocha是一个优秀js测试框架,在许多开源插件测试模块都可以看到它影子 它支持TDD/BDD等多种流行接口,也接受多种...Assertions,should.js/expect/chai/better-assert等,通过这些即可构建各种风格测试用例 2.1 BDD BDD(Behavior Driven Development...另外,当组件版本升级时候,功能可能变多了,那这时候相应测试用例也应该加上,一个优秀测试框架是应该很好支持轻易添加测试用例,比如mocha那样

    80690

    12 款 JavaScript 代码测试必备工具

    每天都会产生新代码、用户测试工具和框架。下面的列表列出了可以完成各种测试需求代码工具。你应该调查研究一下,看这些工具是否适用于你技术栈和技术需求。 01....它语法简洁、明确,写测试非常容易。 02. Mocha Mocha 是一个功能丰富 JavaScript 测试框架,既运行于 Node.js 环境中,也可以运行于浏览器环境中。...Mocha 以串行方式运行测试,能做出灵活而准确报告,也能将测试中未捕捉异常映射到正确测试用例。 03....Chai Chai 是个支持 BDD / TDD 库,可用于 node 和浏览器,可配合任何 JavaScript 测试框架使用。 04....集成 TestRunner 同样允许你以同步方式调用异步命令,这样你不需要关心如何处理 Promise 以避免竞态条件。

    2.2K100
    领券