0

我正在使用 MOCHA 来测试一些快速框架代码。

我编写了一个简单的 MOCHA 代码来测试响应标头中返回的消息。该代码有效。这也意味着我已连接到服务器,并且可以从数据库中获取文件

现在,我想用“SuperTest”来做同样的事情。但是,我得到“错误:连接 ECONMRREFUSED”

这是我的代码:

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

var app = express();

describe('GET /core/dbq/534e930204dd311822ec1c9d', function() {
    this.timeout(15000);
    it ('Check header message', function(done) {
      request(app)
        .get('http://localhost:3001/ecrud/v1/core/dbq/534e930204dd311822ec1c9d')
        .expect('warning', '100 Max Record Limit Exceeded')
        .expect('Content-Type', /json/)
        .expect(200, done);
    } )
} )

控制台上显示的错误是:

1) GET /core/dbq/534e930204dd311822ec1c9d Check header message:
   Error: connect ECONNREFUSED
   at errnoException (net.js:901:11)
   at Object.afterConnect [as oncomplete] (net.js:892:19)

我正在学习使用“SuperTest”。请帮忙。谢谢你。

4

1 回答 1

0

Supertest 在随机端口上启动应用程序并为您填写 URL 的主机+端口部分。您的代码应仅提供路径(和查询)部分。

request(app)
    .get('/ecrud/v1/core/dbq/534e930204dd311822ec1c9d')
    // etc.
    .expect(200, done);

或者,您可以在运行测试之前自己启动应用程序。

describe('GET /core/dbq/534e930204dd311822ec1c9d', function() {
  this.timeout(15000);
  before(function(done) {
    app.listen(3001, function() { done(); });
  });

  it ('Check header message', function(done) {
    request(app)
      .get('http://localhost:3001/ecrud/v1/core/dbq/534e930204dd311822ec1c9d')
      // etc.
  });
});

我强烈建议使用第一种方法,否则您的测试可能会与侦听端口 3001 的其他应用程序发生冲突。

于 2014-04-28T14:51:27.490 回答