关于前端测试Mocha和chai.js

发表于:2016-8-24 14:01

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:进击的前端    来源:51Testing软件测试网采编

  之前写过一个javascript的语法自测(数组),开头关注作者出的题目,然后我发现可以学一下她的代码,当作测试入门。
  基础概念
  TDD和BDD
  TDD是测试驱动开发,BDD是行为驱动开发
  断言
  node自带的断言库是assert,然后chai.js还提供了别的断言库
  测试框架
  组织测试的框架,比较有名的是Mocha
  一个是Mocha是一个富特征的Javascript全栈测试框架
  Mocha is a feature-rich JavaScript test framework running on Node.js and in the browser, making asynchronous testing simple and fun. Mocha tests run serially, allowing for flexible and accurate reporting, while mapping uncaught exceptions to the correct test cases.
  简单实例
  安装
  可以全局安装
  $ npm install --global mocha
  也可以在项目工程中安装
  $ npm install --save-dev mocha
  测试代码
  新建一个test文件夹,在test文件夹下面新建test.js,输入以下内容
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(4));
})
})
})
  其实assert是断言库,断言库一般用来做判断,这里就用了assert.equal来判断程序的结果和期望值是否相等。
  assert的方法很少,也挺直观的
assert.fail(actual, expected, message, operator)
assert.ok(value, [message])
assert.equal(actual, expected, [message])
assert.notEqual(actual, expected, [message])
assert.deepEqual(actual, expected, [message])
assert.notDeepEqual(actual, expected, [message])
assert.strictEqual(actual, expected, [message])
assert.notStrictEqual(actual, expected, [message])
assert.throws(block, [error], [message])
assert.doesNotThrow(block, [error], [message])
assert.ifError(value)
  然后我们看到,代码待用describe(' ',function(){})这样的形式,而且describe可以描述多层结构,利用describe和it的就是BDD,句式是描述它应该怎么样的感觉,利用suite和test的是TDD
  运行测试
  在命令行里面输入
  mocha test.js
  然后如下显示,运行时间可能每个人得到的都不一样
  Array
  #indexOf()
  should return -1 when the value is not present
  1 passing (9ms)
  断言库的选择
  should.js - BDD style shown throughout these docs
  expect.js - expect() style assertions
  chai - expect(), assert() and should-style assertions
  better-assert - C-style self-documenting assert()
  unexpected - “the extensible BDD assertion toolkit”
  chai支持expect(),assert(),should风格的断言方式,所以chai也是一个比较不错的选择
  关于expet
var expect = require('chai').expect;
describe('arrays', function() {
var a;
beforeEach(function() {
a = [ 1, 2, 3, 4 ];
});
it('you should be able to determine the location of an item in an array', function() {
expect(arraysAnswers.indexOf(a, 3)).to.eql(2);
expect(arraysAnswers.indexOf(a, 5)).to.eql(-1);});
}
《2023软件测试行业现状调查报告》独家发布~

精彩评论

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号