如何unit testing一个节点js express应用程序

我想开始在我的节点快递项目上进行unit testing。 什么是最简单和最简单的方法来做到这一点?

这里有以下链接。

  1. 摩卡

    Mocha是在Node.js和浏览器上运行的function丰富的JavaScripttesting框架,使asynchronoustesting变得简单而有趣。 摩卡testing串行运行,允许灵活和准确的报告,同时将未捕获的exception映射到正确的testing用例。

  2. 因果报应

    Karma的主要目标是为开发人员提供高效的testing环境。 这种环境不需要设置大量的configuration,而是开发人员只需编写代码并从testing中获得即时反馈的地方。

  3. 柴是节点和浏览器的BDD / TDD断言库,可以愉快地与任何JavaScripttesting框架配对。

  4. 茉莉花

    Jasmine是JavaScript的行为驱动开发testing框架。 它不依赖于浏览器,DOM或任何JavaScript框架。 因此它适用于网站,Node.js项目或JavaScript可以运行的任何地方。

  5. Blanket.js是一个易于安装,易于configuration和易于使用的JavaScript代码覆盖库,可在浏览器和nodejs中使用。

您也可以按照以下教程

  1. 开始使用摩卡和柴
  2. 茉莉花JS介绍
  3. 用摩卡和柴的业力build立一个项目
  4. Node.jstesting策略
  5. 使用Node.js进行unit testing

摩卡是一个非常坚实的Node / Express解决scheme。 他们的网站有一个入门页面。 一个简单的例子:

var assert = require("assert"); var request = require('supertest'); var express = require('express'); // Module under test var version = require('version'); describe('server.routes.version', function() { var app; beforeEach(function(done) { app = express(); app.use('/version', version); done(); }); it('gets the product version', function (done) { var expected = { 'version': '1.2.3' } request(app) .get('/version') .expect('Content-Type', /json/) .expect(200, expected) .end(function(err, res) { if (err) throw err; done(); }); }); }); 

如果你需要模拟一个Node模块的依赖(最终你可能会这样),事情会变得更加复杂; 我用沙箱模块和sinon的组合已经取得了一些成功:

 var assert = require("assert"); var sinon = require('sinon'); var request = require('supertest'); var express = require('express'); describe('server.routes.version', function() { var app, version, mockConfig; beforeEach(function(done) { var mockConfig = sinon.mock({ getVersion: function() {} }); // Load the tested module within a sandbox var sandbox = require('sandboxed-module'); version = sandbox.require('../server/routes/version', { requires: { '../config': mockConfig } }); app = express(); app.use('/version', version); done(); }); it('gets the product version', function (done) { mockConfig.expects('getVersion').once().returns('1.2.3'); var expected = { 'version': '1.2.3' } request(app) .get('/version') .expect('Content-Type', /json/) .expect(200, expected) .end(function(err, res) { mockConfig.verify(); if (err) throw err; done(); }); }); });