测试Node.js 应用程序
来源:互联网 发布:linux 删除文件第一行 编辑:程序博客网 时间:2024/06/06 03:22
在计算机编程中,单元测试(又称为模块测试, Unit Testing)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。
程序的测试是每个开发人员必须要做的事情,这个事情我们不能全部交给测试人员。给应用程序编写测试是许多开发人员不做的事情,但是如果代码库小而且项目只有一个开发人员的话,倒也无妨。但是随着应用程序的改变,变得越来越复杂,要确保代码的稳定性越来越困难,因此测试变成了必不可少。单元测试根据主流的分类可以分成两类,分别是BDD(Behavior-Driven Development,即行为驱动开发)
和TDD(Test-Driven Development,即测试驱动开发)
今天将对学习的Node.js测试内容进行介绍:
1、使用assert 模块进行测试
2、使用Nodeunit模块进行测试
3、使用Vows模块进行测试
Assert 断言模块
Node.js 在assert模块中提供了一个简单的测试框架。它提供一组断言方法,让开发人员可以简单的创建低级应用测试。
为何使用Node.js中的assert模块,我们需要在脚本中请求它,这个与请求其他模块一样:
var assert=require('assert');而后可以使用模块提供的断言方法。比如我们可以使用assert.strictEqual()方法来比较两个的值是否相等:
assert.strictEqual("hello","hello");完整脚本如下:
var assert = require('assert');assert.strictEqual("hello", "hello");然后另存为test.js文件,在命名行输入:
node test.js
如果测试通过,则在终端上看不到任何输出结果,除非有问题存在,所谓没有问题就是最好的问题。
修改上面的代码替换为
assert.strictEqual("hello", "there");
然后再次执行程序,你会发现此时程序抛出一个异常。默认情况下,AsserError显示的是失败的比较,不过也可以传递第三个参数,它会在异常抛出的时候显示出来:
assert.strictEqual("hello", "there","Message to show if an exception is shown");
Nodeunit 测试
Nodeunit 构建于Node 的assert模块之上,添加了建立与拆卸测试的能力、一部测试能力以及模拟(mock)和桩(stub)的功能。Nodeunit可以通过npm使用全局标记安装到计算机上。
npm install -g nodeunit
编写测试代码
exports.firstTest = function(test){ test.expect(1); test.strictEqual("hello", "hello"); test.done();};exports.secondTest = function(test){ test.expect(1); test.strictEqual("hello", "there"); test.done();};每个测试都声明成exports.testName,这里的testName是测试的描述,在测试的开始处,声明了test.expect(n),这里的n是期望的断言数。这用于避免通过假测试。 在完成测试之后,一定要调用test.done()来表示测试完成。
如果执行以上的代码,可以看到一个测试通过,而另外一个测试失败。并带有失败测试的堆栈踪迹。
Vows 模块
Vows是一个第三方模块,用于以BBD风格的测试Node.js应用程序。可使用npm全局安装Vows;
npm install -g vowsVows也是建立在assert模块之上的,它加入了BDD风格的测试,我们在如下的代码中将使用同步测试示例。
var vows = require('vows'), assert = require('assert');vows.describe('Comparing strings').addBatch({ 'when comparing the same strings': { topic: "hello", 'they should be equal': function (topic) { assert.strictEqual (topic, "hello"); } }, 'when comparing different strings': { topic: "hello", 'they should not be equal': function (topic) { assert.notStrictEqual (topic, "there"); } }}).run();
注意,Vows 鼓励用户在测试中使用大量平白的英文,这不仅可帮助用户从外往内思考应用程序,也有助于测试报表的编写,测试失败的处理。Vows以如下方式用平台英语描述功能:
Description(描述)-----测试套组的描述。
Context(上下文)----测试运行的上下文。
Topic(主题)----要测试的是什么。
Vow(宣告)----期望在测试中发生的是什么。
执行上面的代码,如果测试通过,输出将列出得到的荣耀(honored)的宣告数量,如果测试失败,报告将包括上下文、宣告以及异常的第一行。
- 测试Node.js 应用程序
- node.js应用程序的测试。
- 安装测试node.js
- Node.js测试
- node.js安装、测试
- Node.js UDP测试
- node js 安装 测试
- Node.js搭建Express应用程序
- Node.js 测试批处理命令
- Node.js的编译测试
- node.js安装、启动、测试
- node.js安装部署测试
- 从零开始学习渗透Node.js应用程序
- 从零开始学习渗透Node.js应用程序
- cb 的node.js 静态页面测试
- node.js调研与服务性能测试
- node测试框架:mocha+should.js
- Node.js企业开发: 三调试&测试
- android应用开发架构概述
- CoordinatorLayout 之 AppBarLayout
- 埃氏筛法和欧拉筛法的区别
- android 简单写了一个缓冲图片 json json数组,对象的工具类
- 欢迎使用CSDN-markdown编辑器
- 测试Node.js 应用程序
- Android开发中,变色状态栏
- @PathVariable和@RequestParam的区别,@SessionAttributes
- varchar与char的区别
- 某些车载蓝牙无法通过PBAP获取手机SIM卡联系人
- css-selectors
- xrdp 实现Windows 远程桌面 Ubuntu Linux
- Spring mvc 3 返回json 406错误
- Session 详解