2

スーパーテストを使用してExpressアプリケーション(nodeJS)でモカテストを実行できることを読んだので、別のターミナルセッションでアプリを実行する必要はありません。何を試しても、常に接続エラーで終了します。

継続的インテグレーションを構成するには、ノード サーバーが実行されていなくても、インテグレーションと単体テスト (mocha、supertest、should) を実行できる必要があることは明らかです。

記述されたテストは、アプリの内部 API エンドポイントを検証するためのものです アプリの高速サーバーを実行せずにテストを実行して、たとえばストライダーと統合できるようにする方法を誰が説明できますか

4

1 に答える 1

6

呼び出す実稼働コードを分割しapp.listen、mocha テストの実行中に実行されないようにする必要があります。すべてのルートと設定コードを入れてから、リッスンを開始したり、データベースに接続したりするためのほんの少しのコードをapp/index.js含む別のファイルを用意します。しかし、アプリケーションの詳細のほとんどは構成されているので、スーパーテスト。app/server.jsapp/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 に答える