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

nodejs assert模块: assert.throws只返回undefined

Node.js中的assert模块是一个内置模块,用于编写和运行断言测试。它提供了一组简单的断言测试方法,用于验证代码的正确性。其中,assert.throws方法用于验证一个函数是否抛出了一个错误。

assert.throws方法的语法如下: assert.throws(block[, error][, message])

参数说明:

  • block:要执行的函数或代码块。
  • error:可选参数,用于验证抛出的错误类型或错误消息。
  • message:可选参数,用于在断言失败时显示的自定义错误消息。

assert.throws方法的作用是执行block中的代码,并验证是否抛出了一个错误。如果抛出了错误,则断言成功;如果没有抛出错误,则断言失败。

对于assert.throws方法只返回undefined的情况,可能有以下几种原因:

  1. block中的代码没有抛出错误。这种情况下,assert.throws方法会返回undefined,表示断言失败。
  2. block中的代码抛出了错误,但错误类型或错误消息与指定的error参数不匹配。这种情况下,assert.throws方法同样会返回undefined,表示断言失败。
  3. block中的代码抛出了错误,但没有提供error参数。这种情况下,assert.throws方法会返回错误对象,表示断言成功。

在使用assert.throws方法时,可以根据具体的需求来判断断言的成功与失败。如果需要验证代码是否抛出了指定类型的错误,可以通过error参数来指定。如果只需要验证代码是否抛出了任意类型的错误,可以省略error参数。

以下是assert.throws方法的一个示例:

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

function divide(a, b) {
  if (b === 0) {
    throw new Error('Divide by zero');
  }
  return a / b;
}

// 验证divide函数在除以0时是否抛出了错误
assert.throws(() => {
  divide(10, 0);
}, Error, 'Expected divide by zero error');

在上述示例中,我们定义了一个divide函数,用于执行除法运算。当除数为0时,函数会抛出一个错误。通过assert.throws方法,我们验证了在除以0时是否抛出了一个Error类型的错误,并提供了自定义的错误消息。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数计算(SCF):https://cloud.tencent.com/product/scf
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库 MySQL 版(CDB):https://cloud.tencent.com/product/cdb
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(TBC):https://cloud.tencent.com/product/tbc
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网开发平台(IoT):https://cloud.tencent.com/product/iot
  • 腾讯云移动开发平台(MPS):https://cloud.tencent.com/product/mps
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

    开发环境的搭建 如果想应用Tdd的方法到前端的开发中,主要用到以下几个工具(工具的用法在后面介绍): mocha.js mocha 主要提供了describe的语法,用来描述测试用例,并且把执行测试后的结果清楚的返回到终端上...主要用来mock一些东西,比如可以用sinon mock一个假的函数,sinon也可以返回这个函数执行与否。...newRouter = new VictRouter() let badFn = function() { throw new newRouter[navigateTo]('1111')} assert.throws...但是使用assert.throws的时候,要用一个函数包装要测试的代码: it(`navigateTo的入参类型必须为object`, ()=>{ let newRouter = new VictRouter...() let badFn = function() { throw new newRouter[navigateTo]('1111')} // 这里用一个函数包装 assert.throws

    2.5K20

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

    我可以在测试中使用assert.throws吗? 各位看官请上眼! 测试异常 所以你应该知道什么是 Javascript 的异步函数,对吗?先看一段代码: ?...果然不出所料,异步方法返回了一个Promise rejection,从严格意义上来讲,并没有抛出什么东西。错误被包含在了Promise rejection中。...换句话说,我不能使用 assert.throws 来测试它。 让我们通过测试来验证一下: ? 测试失败了! ? 有没有悟出点什么? 看把你能的,来抓我啊 从严格意义上讲异步函数和异步方法不会抛出错误。...异步函数和异步方法总是返回一个Promise,无论是已解决还是被拒绝。 要拦截异步函数中的异常,必须使用catch()。...以下是在Jest中测试异常的规则: 使用 assert.throws 来测试普通函数和方法中的异常 使用 expect + rejects 来测试异步函数和异步方法中的异常 如果你对如何使用 Jest

    3K30

    彻底搞懂nodejs事件循环

    nodejs架构首先,我们先看下nodejs架构,下图所示:图片如上图所示,nodejs自上而下分为用户代码 ( js 代码 )用户代码即我们编写的应用程序代码、npm包、nodejs内置的js模块等,...undefinednodejs里,胶水代码的主要作用是把nodejs底层实现的C/C++库暴露给js环境。...undefined三方插件是我们自己实现的C/C++库,同时需要我们自己实现胶水代码,将js和C/C++进行桥接。底层库nodejs的依赖库,包括大名鼎鼎的V8、libuv。...:nodejs包管理器undefined...关于nodejs不再过多介绍,大家可以自行查阅学习,接下来我们重点要分析的就是libuv。...undefined2、其次呢,在poll阶段,timeout时间未到的时候,如果有事件返回,就执行该事件注册的回调函数。timeout超时时间到了,则退出poll阶段,执行下一个阶段。

    1.1K20

    彻底搞懂nodejs事件循环_2023-03-15

    nodejs架构首先,我们先看下nodejs架构,下图所示:图片如上图所示,nodejs自上而下分为用户代码 ( js 代码 )用户代码即我们编写的应用程序代码、npm包、nodejs内置的js模块等,...undefinednodejs里,胶水代码的主要作用是把nodejs底层实现的C/C++库暴露给js环境。...undefined三方插件是我们自己实现的C/C++库,同时需要我们自己实现胶水代码,将js和C/C++进行桥接。底层库nodejs的依赖库,包括大名鼎鼎的V8、libuv。...:nodejs包管理器undefined...关于nodejs不再过多介绍,大家可以自行查阅学习,接下来我们重点要分析的就是libuv。...undefined2、其次呢,在poll阶段,timeout时间未到的时候,如果有事件返回,就执行该事件注册的回调函数。timeout超时时间到了,则退出poll阶段,执行下一个阶段。

    99330

    测试 ASP.NET Core API Controller

    由于我几乎做API, 所以本文不包括关于MVC功能的测试, 包括Controller的API相关功能. 测试一个简单的Controller 先举一个简单点的例子: ?...执行方法后返回的结果类型应该实现了IActionResult接口, 这里可以用Assert.IsAssignableFrom(actual)来判断....针对该方法的其它测试 我又添加了两个测试方法, 来测试该方法的不同路径及返回结果: ? 通常一个测试方法里应该只有一个Assert....随后就是一系列的Assert, 判定某些方法是否执行, 返回类型是否正确, 返回的数据是否正确等. Build 测试会通过的: ? 其它路径的测试 目前该方法还有两处地方没有被覆盖: ?...这两个很简单, 不多介绍了, 注意这里使用了async版本的Assert.Throws(). 这两个测试会pass, 最终该方法的代码覆盖率就达到100%了: ?

    2.3K40

    co yield避免嵌套详细代码示例。

    : 请先 npm install -g co thunkify request //全局化安装,  * 再到本js所在目录下 npm link co thunkify request 引用这些全局安装模块...利用co 和 yield 编写和执行异步操作, 可以完全摆脱nodejs的回调深坑, // 大幅提高代码舒适度和团队生产力. 因此,co是深受回调深坑困然的nodejs码农们的不二选择!...需要将其封装(转换)成为可以yield的函数(该函数称为“转换器”), 供yield调用 // 一个转换器的格式一般是这样的: function read(file, encoding) { //这个转换器返回一个调用....     } } //*上述 function 等价于 var read = thunkify(fs.readFile); //如果采用现成的thunkify模块的话, 就不用自己写上面那样的转换器函数了...(typeof a[0].bodyObject, 'undefined', 'Error: a[0].bodyObject is not undefined');     assert.equal(typeof

    1.2K10

    nodejs创建线程问题

    我们知道在nodejs中可以使用new Worker创建线程。今天有个同学恰好问到,怎么判断创建线程成功,这也是最近开发线程池的时候遇到的问题。nodejs文档里也没有提到如何捕获创建失败这种情况。...pthread_create() returns 0; on error, it returns an error number, and the contents of *thread are undefined...所以,如果uv_thread_create_ex返回非0,即pthread_create返回非0。表示报错。我们回头看一下返回非0时,c++的处理。...总结:在nodejs创建过多的线程可能会导致进程终止。而我们无法阻止这个行为。...所以在nodejs里使用多线程的时候,我们需要注意的就是不要开启过多的线程,而在创建线程的时候,我们也不需要关注是否成功,因为只要进程不挂掉,那就是成功。

    97320

    Node入门教程(5)第四章:global 全局变量

    Nodejs 中都有效,以下简单过一下,不熟悉请查MDN 文档 全局属性 Infinity NaN undefined null 字面量 函数属性 eval() uneval() isFinite...中的全局变量 关于模块的补充 这里先简单补充一下模块的概念,后续我们还会更深入讲解一下,笔者不想让复杂的内容让初学者分心,只是想让您能快速先建立学习 Nodejs 的信心。...NodeJs 中把不同功能的 api 封装成不同的模块,避免了不同功能的代码相互冲突。当然 NodeJS 也支持开发人员写的 Nodejs 代码模块化。...如果你是 Java、DotNet 的程序员,那 Nodejs模块就是 DotNet 的程序集或者 Java 的包。...模块机制是怎么搞到的?且看下回再解。 ---- 参考: NodeJs 官网文档 MDN 文档

    1.3K40

    深聊Nodejs模块

    本文讨论 CommonJS 规范,不涉及 ESM我们知道 JavaScript 这门语言诞生之初主要是为了完成网页上表单的一些规则校验以及动画制作,所以布兰登.艾奇(Brendan Eich)花了一周多就把...1.1.2、模块定义我们已经知道了如何引入一个 Nodejs 模块,但是我们应该如何定义一个 Nodejs 模块呢?...Nodejs 先会根据模块信息解析出文件路径和文件名,然后以文件名作为 Module._cache 对象的键查询该文件是否已经被缓存,如果已经被缓存的话,直接返回缓存对象的 exports 属性。...Nodejs 引入模块的加载顺序和基本步骤 1、加载顺序和速度: require 函数接收到模块标识符时,会优先检查内存中是否已经有缓存的模块对象,有的话直接返回,没有就继续查找。...Nodejs 对于不同模块的编译方式JavaScript 模块通过包裹函数包裹之后交给系统函数运行JSON 模块通过 JSON.parse 转化为 JavaScript 对象然后返回结果C/C++ 模块通过系统级的

    1.6K21

    测试利器Mocha

    介绍 mocha 是一个功能丰富的javascript测试框架,可以运行在nodejs和浏览器环境,使异步测试变得简单有趣。...: 测试用例首先需要引用断言模块,如上文中var assert = require('assert');,代码 assert.equal(-1, [1,2,3].indexOf(5)); 中使用的是assert.equal...message为返回的信息。 运行 Mocha:$ mocha 断言 断言(assert)指的是对代码行为的预期。一个测试用例内部,包含一个或多个断言(assert)。...这意味着你可以利用如 should.js断言库、 Node.js 常规的 assert 模块或其它类似的断言代码库。...以下是众所周知的适用于Node.js或浏览器的断言库: should.js expect.js chai.js better-assert assertnodejs 原生模块,在前文示例中我们有应用到

    1.4K20
    领券