Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用jasmine测试Express.js_Node.js_Express_Jasmine - Fatal编程技术网

Node.js 使用jasmine测试Express.js

Node.js 使用jasmine测试Express.js,node.js,express,jasmine,Node.js,Express,Jasmine,我正在学习Node.js和Express框架。我是茉莉花的忠实粉丝。所以我想在任何可能的时候使用jasmine,但是,我找不到一个用jasmine测试Express的好方法。例如,我应该如何在app.js中测试路由 如果我在app.js中有此路线: app.get('/', function(req, res) { ... }); 如何使用jasmine来测试它?使jasmine与node.js一起使用变得很容易。他们的网站上有一些例子。另一个例子可以在中找到,也许你可以试试 下面是一个简

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

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

app.get('/', function(req, res) {
  ...
});
如何使用jasmine来测试它?

使jasmine与node.js一起使用变得很容易。他们的网站上有一些例子。另一个例子可以在

中找到,也许你可以试试

下面是一个简单的例子:

var request = require('supertest')
  , express = require('express');

var app = express();

app.get('/user', function(req, res){
  res.send(200, { name: 'toto' });
});


describe('GET /user', function(){
  it('should respond with json', function(done){
    request(app)
      .get('/user')
      .set('Accept', 'application/json')
      .expect('Content-Type', 'json')
      .expect(200, done);
  })
})
你应该试试看


我还没有机会使用它,但在我寻找同一问题的解决方案时,这是我能找到的最好的解决方案。

您可以将supertest与jasmine一起使用,但只需手动传递错误即可。GitHub项目上的一个问题在不久前就已经公开了


您可以尝试使用Jasmine承诺的supertest。这对我很有用:

以下是一些例子:


自从Jasmine 2以来,在Node.js环境中使用Jasmine非常简单。要使用它测试应用程序,我建议将Jasmine与

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

project/spec/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());
    });
  });
});
{
  "helpers": [
    "helpers/**/*.js"
  ],
  "random": false,
  "spec_dir": "spec",
  "spec_files": [
    "**/*[sS]pec.js"
  ],
  "stopSpecOnExpectationFailure": false
}
一些先决条件:

  • 将JasmineV2作为开发依赖项安装到项目中:
    npmi-Djasmine@2
  • 在项目中安装supertest v3作为开发依赖项:
    npm i-Dsupertest@3
  • 使用
    Jasmine init
    创建一个初始Jasmine配置(注意:如果您还没有执行此命令,则需要首先全局安装Jasmine)
  • 创建以“Spec.js”结尾的规范(如
    ServerSpec.js
  • 以下是Jasmine配置的外观:

    project/spec/support/jasmine.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());
        });
      });
    });
    
    {
      "helpers": [
        "helpers/**/*.js"
      ],
      "random": false,
      "spec_dir": "spec",
      "spec_files": [
        "**/*[sS]pec.js"
      ],
      "stopSpecOnExpectationFailure": false
    }
    
    要运行您的规范(测试套件),只需将其添加到您的测试中并执行
    npm测试
    (或者只执行
    npm t
    ):


    我认为supertest也可以很容易地与茉莉花一起使用,所以你的建议会很有帮助,而且没有必要将它与摩卡咖啡联系起来。他说他喜欢茉莉花。他向茉莉寻求解决办法。这个答案给了他一个摩卡咖啡的解决方案。Mocha不是Jasmine。在我们用frisbyjs测试我们的expressjs api部署时,我们非常满意:)你的链接不需要信息。添加了到存档版本的链接。