3

Express、Mongoose、およびconfigを使用する REST API サーバーがあります。API の単体テストを行いたいと考えています。基本的に、ポート x で一時 Web サーバーを起動し、ポート y で空の mongo-database を起動し、いくつかの API 呼び出し (gets と puts の両方) を実行し、返されたものを検証してから一時サーバーをシャットダウンし、テストが終了したらテスト データベースをドロップします。 . これを行う最善の方法は何ですか?mocha / rewireを見てきましたが、一時サーバーとデータベースをセットアップする方法がわかりません。また、ベストプラクティスが何であるかもわかりません。

4

5 に答える 5

6

Jenkins (継続的インテグレーション サーバー) とMochaを使用してアプリをテストしましたが、あなたと同じ問題を抱えていることがわかりました。次のシェル コマンドを実行するように Jenkins を構成しました。

npm install
NODE_ENV=testing node app.js &
npm mocha
pkill node

これにより、テストを実行するためにサーバーが実行され、その後、サーバーが強制終了されます。Jenkins は既にポート 8080 を使用しているため、これにより NODE_ENV 環境変数も設定されるため、テスト時に別のポートでサーバーを実行できます。

コードは次のとおりです。

app.js:

...
var port = 8080
if(process.env.NODE_ENV === "testing")
    port = 3000;
...

test.js:

var request = require('request'),
    assert = require('assert');

    describe('Blabla', function() {
      describe('GET /', function() {
        it("should respond with status 200", function(done) {
          request('http://127.0.0.1:3000/', function(err,resp,body) {
            assert.equal(resp.statusCode, 200);
            done(); 
          }); 
        }); 
      });
    });
于 2012-11-12T02:26:11.113 に答える
1

私が探していたものを正確に見つけました: testrest。私はその .txt ファイルベースの構文が好きではありません - 私は仕様のために代わりに .json ファイルを使用するように適応しました。

于 2012-09-10T08:51:52.097 に答える
0

また、vowsの上にapi-easyビルドがあり、最初のものは使いやすいようですが、2番目のものは非常に柔軟で強力です

于 2012-10-18T00:28:47.173 に答える
0

Buster.JSを試してみることをお勧めします。非同期テスト、モック/スタブを実行し、サーバーを起動できます。

于 2012-09-03T10:01:52.810 に答える
0

正しい方法はありませんが、個人用ディレクトリ構造のシード アプリケーションを作成し、@norman784 によって提案された vows テストを含めました。

あなたはそれを複製することができます:git clone https://github.com/hboylan/express-mongoose-api-seed.git

またはnpmで:npm install express-mongoose-api-seed

于 2014-02-25T20:25:44.887 に答える