power assert_更智能、优雅的全方位 assert 断言库

时间: 2018-11-10阅读: 1785标签: 测试

在写测试代码时,以往我们需要翻阅文档,学习各种 API 才能明白如何操作断言。而现在我们可以透过 power-assert 的 assert 方法来减轻调试压力。不仅如此,它还提供更加直观,具体的运行效果,帮助 DEBUG。写测试代码,其实可以很容易。


例子 

power-assert 提供的 assert 方法,已经满足日常的断言需求。

describe('Array', function () {
    beforeEach(function () {
        this.ary = [1, 2, 3];
    });
    describe('#indexOf()', function () {
        it('应该返回 index 如果值存在的话', function () {
            var zero = 0, two = '2';
            assert(this.ary.indexOf(zero) === two);
        });
        it('应该返回 -1 如果值不存在的话', function () {
            var minusOne = -1, two = 2;
            assert.ok(this.ary.indexOf(two) === minusOne, 'THIS IS AN ASSERTION MESSAGE');
        });
    });
});

describe('String.slice()', function () {
    it('提取字段的某个部分,并返回一个新的字段', function () {
        var str1 = "The morning is upon us.";
        var str2 = str1.slice(4, -2);
        assert(str1 === str2);
    });
});

结果如下:


从 power-assert 中,你可以很直观地知道到底哪个地方的值是和预想中的不同,比如说第一段测试代码里面的 indexOf() 方法,你可以看出 power-assert 指出左侧的 [number] this.ary.indexOf(zero) 返回了 -1,而右侧则的 [string] two 则返回了 "2"。 

更加到位的是:power-assert 对于每一个运行的操作都有所指出,例如 this.ary 只有 [1,2,3],zero 是 0(虽然代码写得很清楚)。

如果有复杂的测试需求,你可以封装它们为独立的方法,然后组合到一起。

你可以把以上代码,复制粘贴到官网提供的 power-assert playground,从而看到 power-assert 的效果。


快速入门

如果你在使用 assert 的话,你无需使用 require('power-assert'),Power Assert 会自动进行转换。 Power Assert 有著和 assert 一模一样的 API,也就是说,你可以随时,无痛转换两者。

安装 

如果你的运行环境是只有 Node.js 的话,那麽你可以运行以下代码来安装。 

npm install --save-dev mocha power-assert intelli-espower-loader

 然后运行 mocha 来测试你的代码: 

npx mocha --require intelli-espower-loader

那麽你就可以看到你的 assert 现在提供了很多实用的提示信息了。 


配置方法

配置组合

环境技术
power-assert-node-seedNode.jspower-assert + intelli-espower-loader
power-assert-testem-seedBrowsers(testem 驱动)power-assert + gulp-espower + testem.
power-assert-karma-seedBrowsers(Karma 驱动)power-assert + espowerify + browserify + Karma.

深入配置

它支持 babel, browserify, webpack, grunt, gulp 等前端现代化开发工具,并支持 TypeScript(带类型定义),CoffeeScript。 如果你有试过其他的代码测试工具,例如chai, should.js, expect.js, 的话,Power Assert 提供了代码迁移工具。 

你可以透过以下的组合来配置你的工程的 power-assert:

power-assert + espower-loader 或 intelli-espower-loader : 简单、官方推荐的配置方法,虽然这个方法只能在 Node.js 环境下运行。 
power-assert + Babel + babel-preset-power-assert: 如果你使用 Babel 6 以上的版本,那麽这会是唯一可行的配置方法。 
power-assert + espower-coffee or espower-typescript: 一个 AltJS 配搭 power-assert 的配置方法,官方同样推荐,但这个方法只能在 Node.js 环境下运行。 
power-assert + browserify + espowerify: 如果你使用 browserify 而不是 Babel 的话,你可以使用这个方法。 
power-assert + webpack + webpack-espower-loader: 如果你使用的是 webpack 而不是 Babel 的话,你可以使用这个配置方法。 
power-assert + espower-cli or grunt-espower or gulp-espower : 这个方法会产生一段可以到处运行的代码。

如果你以上的组合都不想用的话,那麽你可以使用 espower-cli 来产生一代可以让 power-assert 运行的测试代码:

npm install -g espower-cli
espower test/some_test.js > build/test/some_test.js


后记 

其实早在 2014 年,已经有一位名叫 Takuto Wada 的日本程序员分享过 关于 power-asset 的 PPT。虽然版本有点过时,但是基本上大同小异。 我最近尝试一个新的开发模式,Test Driven Development (TDD) ﹣ 测试驱动开发,也就是说如何可以随心所欲地重构代码而不让它崩溃。


来源:https://calpa.me/2018/10/25/power-assert-smart-and-elegant-tools/


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/1309

关闭

性能测试vs压力测试vs负载测试

软件测试包括不同的测试实践,比如单元测试、集成测试、UAT测试和可访问性测试等。每种测试实践在软件开发生命周期(SDLC)中都有重要的地位和作用。

神奇的 Promise: 一次异步代码的单元测试

本文适用环境为 NodeJs v12 和 2019 年 11 月 19 日最新版 Chrome。写这篇文章的起因是在写单元测试时,做形如下测试时无法使用 await 将测试代码恰好阻塞到 catch 在 Event Loop 中被调用后的时机

十大跨浏览器的测试工具

在实际使用中,我们往往会发现某些网站应用虽然能够在Mozilla和Chrome中运行良好,但是在其他浏览器上却总有一些违和感。也许就是因为某个网站的兼容性问题,导致您失去了一个又一个的访客或潜在用户

Node.JS如何按顺序调用async函数,如何判断是否为async函数,在mocha中自动化测试async/await代码

在Node.JS中,如果你即不喜欢回调代码嵌套,也不喜欢promise的链式写法,可以使用async/await将程序改造成顺序执行的。async/await本质上也是由Promise实现的,具体原理可在网上搜索,那么调用时和普通函数调用有何不同?

webdriver定位元素

在UI层面的自动化测试开发中,元素的定位与操作是基础。webdriver提供了很多种定位方法,以下总结了6种:万能法:find_element_by_xpath()、id定位:find_element_by_id(\"id\"),id属性是唯一的、class定位

web自动化测试

对单独的代码块,比如函数进行测试。单元测试是自动化测试的主要形式,也是最基本的形式。集成测试对代码单位之间的协同工作进行测试,比如测试主程序和各个扩展的继承代码。

引入 Enzyme 并测试 React 组件

使用 Enzyme 库测试 React。这样可以使你的程序将更加可靠,并且更加容易避免回归。我们在这里用了 Jest,不过 Enzyme 也可以与 Mocha 和 Chai 之类的库一起使用。

B/S测试与C/S测试区别

C/S client/server即客户端/服务器 分为客户机与服务器两层,客户机不是没有任何运算能力的输入输出设备,要求有一定的数据处理能力和数据存储能力,通过把应用软件的数据和计算合理地分配给客户机和服务器;

前端性能测试工具整理简介_性能测试工具都有哪些?

前端性能测试工具都有哪些:Favicon、Open Graph、图片优化-压缩图像、CSS 优化-Autoprefixer、Purifycss、minify CSS、减少载入时间、GZIP、CDN、优化平台-Sentry、Google Tag Manager

web安全测试必须注意的五个方面

随着互联网的飞速发展,web应用在软件开发中所扮演的角色变得越来越重要,同时,web应用遭受着格外多的安全攻击,其原因在于,现在的网站以及在网站上运行的应用在某种意义上来说,它是所有公司或者组织的虚拟正门

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!