2

我读过我可以在 Express 应用程序 (nodeJS) 中运行 mocha 测试并进行超级测试,因此不需要在不同的终端会话中运行应用程序。无论我尝试什么,它总是以连接错误结束。

为了配置我们的持续集成,显然集成和单元测试(mocha、supertest、should)应该能够在节点服务器不运行的情况下运行

书面测试是为了验证我们应用程序的内部 api 端点谁能解释如何在不运行应用程序的 express 服务器的情况下运行测试,以便它们可以与例如 strider 集成

4

1 回答 1

6

您需要拆分调用的生产代码,app.listen并确保在 mocha 测试运行期间不会执行这些代码。我把我所有的路由和设置代码放进去app/index.js,然后有一个单独的文件app/server.js,里面只有一点点代码来开始监听、连接到数据库等。但是我的大部分应用程序细节都被配置了,app/index.js所以我可以用超测。

//index.js
var app = require("express")();

app.get("/", function (req, res) {
  res.type("text");
  res.send("Welcome home");
});

module.exports = app;

//server.js
#!/usr/bin/env node
var app = require("./index");
app.listen(3000);

//index.mocha.js
var app = require("./index");
var request = require("supertest")(app);
var expect = require("expectacle");

describe("the home page", function () {
  it("should welome me in plain text", function(done) {
    request.get("/")
      .expect(200)
      .expect("Content-Type", "text/plain; charset=utf-8")
      .end(function (error, result) {
        expect(error).toBeFalsy();
        expect(result.text).toBe("Welcome home");
        done();
      });
  });
});
于 2014-08-24T20:39:52.767 回答