美文网首页
Node.js使用assert模块进行不中断的单元测试

Node.js使用assert模块进行不中断的单元测试

作者: melon_melon | 来源:发表于2018-02-04 10:31 被阅读0次

Node.js自带的assert模块在测试时会抛出AssertionError中断测试,那么有的时候需要继续测试就很麻烦。
比如数据清洗,想要一次找出所有的数据就比较头疼。
一般来讲可以使用包装的方式实现不中断的单元测试:

const { strictEqual, AssertionError } = require("assert");

function _strictEqual(...rest) { //进行包装
    try {
        strictEqual(...rest);
    } catch (err) {
        if(err instanceof AssertionError) {
            console.error(err.message); //不中断
        } else {
            throw err;
        }
    }
}

还可以像这样:

const assert = require("assert");

for(let key in assert) {
    //判断:是function、定义在assert上、不是首字母大写的Class。由于Symbol对象不是enumerable,因此不用考虑。
    if(typeof assert[key] === "function" && assert.hasOwnProperty(key) && key[0].toLowerCase() === key[0]) {
        let f = assert[key];
        assert[key] = function (...rest) { //进行包装
            try {
                f(...rest);
            } catch (err) {
                if(err instanceof assert.AssertionError) {
                    console.error(err.message); //不中断
                } else {
                    throw err;
                }
            }
        };
    }
}

//测试
assert.strictEqual("1", 2, "× test failed"); //输出 × test failed

理论上讲,不魔改assert的方法的话可以另外的使用Promise.all实现,这里不再赘述。
欢迎捉虫。

相关文章

  • Node.js使用assert模块进行不中断的单元测试

    Node.js自带的assert模块在测试时会抛出AssertionError中断测试,那么有的时候需要继续测试就...

  • Dart 笔记 7 - 断言与异常

    断言 assert 如果布尔条件为 false,则使用 assert 语句中断正常执行。 Assert 语句不会影...

  • 8 - 测试

    单元测试 Error 不会中断 Fail 会中断测试 使用 go test -v -cover 可是进行代码覆盖率...

  • Node.js中的断言处理

    在Node.js中,可以利用assert模块进行断言处理,即书写一些判断用测试代码,如果判断结果为假,则抛出Ass...

  • nodejs api

    asset 断言 assert模块提供了一组简单的断言测试集合,用于测试不变量。 该模块是供 Node.js 内部...

  • 2018-02-08

    perl 模块安装 通过cpan进行安装 cpan install Carp::Assert

  • 面试算法和数据结构总结

    Experience 命名style 单元测试和assert的使用 anotation 括号匹配,标点无遗漏 c+...

  • Android assert 机制

    java 中 可以使用assert语法来进行一些判断检,但是 android上 assert似乎不生效, 这是为什...

  • 对对象进行Assert

    在单元测试中,当期望结果(Expect)和实际结果(Actual)都是对象时,进行Assert.assertEqu...

  • 前端学习回顾-3/Node.js入门

    程序员要快速学新知识就得按照CRM /抄/运行/修改/ node.js用的是commonjs模块 assert 模...

网友评论

      本文标题:Node.js使用assert模块进行不中断的单元测试

      本文链接:https://www.haomeiwen.com/subject/xsqmzxtx.html