mocha

教程:https://cnodejs.org/topic/516526766d38277306c7d277

看着挺爽的。

//同步

var assert = require(‘assert‘);

describe(‘Array‘, function(){
	describe(‘#indexOf‘, function(){
		it(‘should return -1 when the value is not present‘, function(){
			assert.equal(-1, [1,2,3].indexOf(5));
			assert.equal(-1, [1,2,3].indexOf(0));

		})
	})
})

describe (moduleName, testDetails)
由上述代码可看出,describe是可以嵌套的,比如上述代码嵌套的两个describe就可以理解成测试人员希望测试Array模块下的#indexOf() 子模块。

module_name 是可以随便取的,关键是要让人读明白就好。

it (info, function)
具体的测试语句会放在it的回调函数里,一般来说info字符串会写期望的正确输出的简要一句话文字说明。

当该it block内的test failed的时候控制台就会把详细信息打印出来。

一般是从最外层的describe的module_name开始输出(可以理解成沿着路径或者递归链或者回调链),最后输出info,表示该期望的info内容没有被满足。

一个it对应一个实际的test case

assert.equal (exp1, exp2)
断言判断exp1结果是否等于exp2, 这里采取的等于判断是== 而并非 === 。即 assert.equal(1, ‘1’) 认为是True。

这只是nodejs里的assert.js的一种断言形式,下文会提到同样比较常用的should.js。

采用should

//异步

最深处的回调函数中加done()表示结束:按照瀑布流编程习惯,取名done是表示你回调的最深处,也就是结束写嵌套回调函数。但对于回调链来说done实际上意味着告诉mocha从此处开始测试,一层层回调回去。

假如我有两个异步函数(两条分叉的回调链),那我应该在哪里加done()呢?实际上这个时候就不应该在一个it里面存在两个要测试的函数,事实上一个it里面只能调用一次done,当你调用多次done的话mocha会抛出错误。

fs = require(‘fs‘);
describe(‘File‘, function(){
    describe(‘#readFile()‘, function(){
        it(‘should read test.ls without error‘, function(done){
            fs.readFile(‘test.ls‘, function(err){
                if (err) throw err;
                done();
            });
        })
        it(‘should read test.js without error‘, function(done){
            fs.readFile(‘test.js‘, function(err){
                if (err) throw err;
                done();
            });
        })
    })
})

未写细节的:默认会pass

describe(‘Array‘, function(){
    describe(‘#indexOf()‘, function(){
        it(‘should return -1 when the value is not present‘, function(){
        })
    })
});

only skip函数:只有only的会被执行,另一个会被忽略掉。每个函数里只能有一个only。如果是it.skip ,那么该case就会被忽略。

fs = require(‘fs‘);
describe(‘File‘, function(){
    describe(‘#readFile()‘, function(){
        it.only[skip](‘should read test.ls without error‘, function(done){
            fs.readFile(‘test.ls‘, function(err){
                if (err) throw err;
                done();
            });
        })
        it(‘should read test.js without error‘, function(done){
        })
    })
})

before beforeEach after afterEach

beforeEach会对当前describe下的所有子case生效。
before和after的代码没有特殊顺序要求。
同一个describe下可以有多个before,执行顺序与代码顺序相同。
同一个describe下的执行顺序为before, beforeEach, afterEach, after
当一个it有多个before的时候,执行顺序从最外围的describe的before开始,其余同理。

以上都是BDD 行为驱动开发

如果是TDD的话 测试驱动开发:suite, test, setup, teardown

suite ‘Array‘, !->
    setup !->
        console.log ‘setup‘

    teardown !->
        console.log ‘teardown‘

    suite ‘#indexOf()‘, !->
        test ‘should return -1 when not present‘, !->
            assert.equal -1, [1,2,3].indexOf 4
时间: 2024-09-28 23:00:40

mocha的相关文章

【Mocha.js 101】同步、异步与 Promise

前情提要 在上一篇文章<[Mocha.js 101]Mocha 入门指南>中,我们提到了如何用 Mocha.js 进行前端自动化测试,并做了几个简单的例子来体验 Mocha.js 给我们带来的便利. 在本篇文章中,我们将了解到 Mocha.js 的同步/异步测试,以及如何测试 Promise. 同步代码测试 在上一篇文章中,其实我们已经学会了如何测试同步代码.今天,我们 BDD 风格编写一个测试: var should = require( 'should' ); var Calculator

[Node.js] Testing ES6 Promises in Node.js using Mocha and Chai

Writing great ES6 style Promises for Node.js is only half the battle. Your great modules must include tests as well to ensure future iterations don't break them. In this lesson, I show you a simple ES6 Promise in Node.js, then walk you through creati

关于JavaScript测试工具:QUnit, Jasmine, MoCha

在进行前端开发过程中,在某些场景下,需要通过编写单元测试来提高代码质量.而JavaScript常用的单元测试框架有这几个:QUnit, Jasmine, MoCha.下面就基于这三个工具,简单做一比较: 1. QUnit QUnit是一个JavaScript单元测试框架. 它是个强大,容易使用和上手的JavaScript单元测试框架.它被用于进行 jQuery, jQuery UI and jQuery 移动工程的测试,以及其他通用的JavaScript代码测试. Features:- Simi

前端单元测试框架-Mocha

引言 随着前端工程化这一概念的产生,项目开发中前端的代码量可谓是'急剧上升',所以在这种情况下,我们如何才能保证代码的质量呢,对于框架,比如React.Vue,因为有自己的语法规则,及时每个开发人员的编码风格规范各不相同,但最终的产出都大同小异,代码质量差距不是很大:但对于一些基础类库或方法的开发,我们就要谨慎又谨慎,代码质量一定要高,尽量避免出现Bug. 那我们如何做到产出高质量代码呢?单元测试才是正解,俗话说'跳过单元测试和不仔细过冒烟就交由QA测试的,就是在耍流氓'(这句话是我自己编的):

[Node.js] Test Node RESTful API with Mocha and Chai

In this lesson, we will use Chai's request method to test our Node application's API responses.By the end of this lesson, you will know how to:- install the prerequisites to use mocha and chai in your application- test for HTTP status response codes-

Testing Node.js With Mocha and Chai

原文: http://mherman.org/blog/2015/09/10/testing-node-js-with-mocha-and-chai/#.ViO8oBArIlJ 为什么要测试? 在此之前了解为什么要测试非常重要. 通过下面的地址获取一个Node/Express的简单的CRUD应用: $ git clone https://github.com/mjhea0/node-mocha-chai-tutorial.git $ git checkout tags/v1 现在可以通过食用cu

JavaScript TDD with Mocha

开发现状 当新的版本快要发布的时候,大家都忙于加班,加紧修复BUG1.BUG2.我想这就是很多公司开发的现状. 为了不至于让上线的版本挂掉挂掉,少不了就是 人肉测试. 在一个项目中,我们会做许许多多各种各样的测试,这些测试都必不可少的.测试是项目成功不可或缺的一部分.但 人肉测试 不在本博的讨论范围. 测试大体分为以下几类 单元测试 集成测试 功能测试 测试驱动开发 TDD(Test-Driven Development) 从根本上改变了传统的开发模式,它要求你在写代码之前就写好测试,而不仅仅是

测试框架Mocha与断言expect

测试框架Mocha与断言expect在浏览器和Node环境都可以使用除了Mocha以外,类似的测试框架还有Jasmine.Karma.Tape等,也很值得学习. 整个项目源代码: 为什么学习测试代码?1. react的开发不适合网页端的调试和测试2. 把关所写代码质量,防止bug和漏洞 要测试的文件add.js测试文件命名为:add.test.js或者add.spec.js 测试脚本可以独立运行.测试脚本里包含一个或多个describe块,每个describe块应该包括一个或多个it块 add.

nodejs mocha 单元测试

用mocha进行单元测试 首先搭建环境 1.安装mocha sudo npm install -g mocha 2.在模块装添加should,package.json添加"shoud":"*",然后npm install 如何测试 1.首先要在带测试文件中引入should require('should'),然后根据教程编写程序 2.mocha file 就可以对js文件进行测试了,但如果你的是coffee文件,那必须指定用什么语法解析 具体命令行: mocha -