使用jasmine来测试Express.js

use*_*490 23 node.js express jasmine

我正在学习Node.js和Express框架.我是茉莉花的忠实粉丝.所以我想尽可能地使用茉莉花,但是,我找不到用茉莉花测试Express的好方法.例如,我应该如何测试app.js中的路由?

如果我在app.js中有这条路线:

app.get('/', function(req, res) {
  ...
});
Run Code Online (Sandbox Code Playgroud)

我怎样才能用茉莉花来测试呢?

Mat*_*nen 7

Jasmine-node使用node.js轻松使用jasmine.他们的网站上有一些例子.另一示例可以从找到http://blog.drewolson.org/post/14684497867/ web.archive.org


Ben*_*uer 5

从 Jasmine 2 开始,在 Node.js 环境中使用 Jasmine 非常简单。要使用它测试express应用程序,我建议将 Jasmine 与supertest结合使用。

下面是这样一个测试的样子:

项目/规范/ServerSpec.json

const request = require('supertest');
const app = require('../app');

describe('Server', () => {
  describe('REST API v1', () => {
    it('returns a JSON payload', (done) => {
      request(app)
        .get('/rest/service/v1/categories')
        .expect(200)
        .expect('Content-Type', 'application/json; charset=utf-8')
        .end((error) => (error) ? done.fail(error) : done());
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

一些先决条件:

  1. 在您的项目中安装 Jasmine v2 作为开发依赖项: npm i -D jasmine@2
  2. 在您的项目中安装 supertest v3 作为开发依赖项: npm i -D supertest@3
  3. 使用创建初始 Jasmine 配置jasmine init(注意:如果您还没有运行此命令,则需要先全局安装 Jasmine)
  4. 创建以“Spec.js”结尾的规范(如ServerSpec.js

下面是 Jasmine 配置的样子:

项目/规范/支持/茉莉花.json

{
  "helpers": [
    "helpers/**/*.js"
  ],
  "random": false,
  "spec_dir": "spec",
  "spec_files": [
    "**/*[sS]pec.js"
  ],
  "stopSpecOnExpectationFailure": false
}
Run Code Online (Sandbox Code Playgroud)

要运行您的规范(测试套件),只需将其添加到您的npm 脚本并执行npm test(或仅执行npm t):

  "scripts": {
    "test": "jasmine"
  },
Run Code Online (Sandbox Code Playgroud)