Nodejs 断言 assert

本文介绍Node.js内置的assert模块及Mocha框架的基本使用方法。assert模块提供了丰富的断言函数,如deepStrictEqual用于深度比较两个对象是否相等;Mocha支持TDD风格测试,通过describe和it定义测试套件与案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.全局安装 mocha

npm install mocha -g复制代码

2.nodejs assert 简介

strict模式:

    当使用 strict 模式时,任何 assert 函数都会使用严格函数模式的等式。 所以 assert.deepEqual() 会等同于 assert.deepStrictEqual()

    使用方式:const assert = require('assert').strict;

assert(value[, message]):assert.ok() 的别名。

        value <any> 要检查是否为真的值。
        message <string> | <Error>

    assert.deepStrictEqual(actual, expected[, message]):测试 actual 参数与 expected 参数是否深度相等。 深度相等意味着子对象中可枚举的自身属性也会按以下规则递归地比较。

    assert.fail([message]):抛出 AssertionError,并带上提供的错误信息或默认的错误信息。 如果 message 参数是 Error 的实例,则会抛出它而不是 AssertionError

    assert.ifError(value):如果 value 不为 undefinednull,则抛出 value。 可用于测试回调函数的 error 参数。 堆栈踪迹会包含传入 ifError() 的错误的所有帧,包括潜在的 ifError() 自身新增的帧。

    assert.notDeepStrictEqual(actual, expected[, message]):测试 actual 参数与 expected 参数是否不深度全等。 与 assert.deepStrictEqual() 相反。

    assert.ok(value[, message]):测试 value 是否为真值。 相当于 assert.equal(!!value, true, message)

assert.rejects(block[, error][, message]):等待 block 的 promise 完成,如果 block 是一个函数,则立即调用该函数并等待返回的 promise 完成,然后检查 promise 是否被 reject。如果 block 是一个函数且同步地抛出一个错误,则 assert.rejects() 会返回一个被 reject 的 Promise 并传入该错误。 如果该函数没有返回一个 promise,则 assert.rejects() 会返回一个被 reject 的 Promise 并传入 ERR_INVALID_RETURN_VALUE 错误。 以上两种情况都会跳过错误处理函数。

该函数相当于 assert.throws(),除了需要等待完成的异步特性。

error 可以是 ClassRegExp、校验函数、每个属性都会被测试的对象、或每个属性(包括不可枚举的 messagename 属性)都会被测试的错误实例。

如果指定了 message,则当 block 没被 reject 时,message 参数会作为 AssertionError 的错误信息。

    assert.strictEqual(actual, expected[, message]):使用 SameValue比较法测试 actual 参数与 expected 参数是否全等。

    assert.throws(block[, error][, message]):断言 block 函数会抛出错误。error 可以是 ClassRegExp、校验函数、每个属性都会被测试是否深度全等的校验对象、或每个属性(包括不可枚举的 messagename 属性)都会被测试是否深度全等的错误实例。 当使用对象时,可以使用正则表达式来校验字符串属性。如果指定了 message 参数,则当 block 函数不抛出错误时,message 参数会作为 AssertionError 的错误信息。

3.mocha 对于TDD api 简介

    describe(description,fun):称为测试套件,表示一组相关的测试description:测试套件的名称,fun:执行函数。

    it(description,fun):表示一个单独的测试,是测试的最小单位。description:测试用例名称,fun:执行函数。

    done():用于基于回调函数的异步测试,当done()被多次执行则抛出错误。

    describe块中 测试用例钩子        

describe('hooks', function() {

  before(function() {
    // 在本区块的所有测试用例之前执行
  });

  after(function() {
    // 在本区块的所有测试用例之后执行
  });

  beforeEach(function() {
    // 在本区块的每个测试用例之前执行
  });

  afterEach(function() {
    // 在本区块的每个测试用例之后执行
  });

  // test cases
});复制代码

   

参考:http://www.ruanyifeng.com/blog/2015/12/a-mocha-tutorial-of-examples.html

https://mochajs.org

http://nodejs.cn/api/assert.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值