6

いくつかの接続スタイルのエンドポイント ハンドラー ( function(req,resp) ) を含む node.js でアプリを作成しており、完全なアプリを実行する必要なく、それらに対していくつかの単体テストを作成したいと考えています。

手動で書き込んだフィクスチャを「簡単に」プッシュできることはわかっていますが、これらのフィクスチャをより速く生成するのに役立つライブラリがあるかどうか疑問に思っていました。

編集:私が何を望んでいるのかをさらに説明するために、ユニットテストで(アプリではなく)ハンドラーのみを実行したいと思います。そのためには、偽のreqとresが必要です。これらは、私がモックしたい 2 つのオブジェクトです。

現在、テスト ランナーとコア アサート モジュールとして mocha を使用しています。

4

3 に答える 3

2

この質問が古いことは知っていますが、今これを行うための優れた方法は、Supertest https://github.com/visionmedia/supertestを使用することです

Django テスト クライアント ライブラリを使用したことがある場合は、そのように機能します。ビュー/ルートの実行をシミュレートして、実際のブラウザーがビューにヒットしたかのようなテスト シナリオを取得します。つまり、req と res はモック アウトされますが、期待どおりに動作します。これは、Selenium (または、カバーの下で Webdriver を使用する分度器など) よりもはるかに高速です。

おそらくご存じのとおり、ロジックの多くをルートから移動して、個別に単体テストできるようにすることをお勧めします。Supertest を単体テストとして使用することはあまり考えていません。常に複数のコード ユニットをテストしているためです。

于 2014-06-06T20:19:56.413 に答える
2

app関数に渡す方法でルートを定義した場合、スーパーテストを使用してルートをテストできます。

テスト

var app = require('./real-or-fixture-app'); //depends on your setup

require('routeToTest')(app);

var request = require("supertest");

describe("Test", function(){
    it("should test a route", function(done){
        request(app)
            .post("/route")
            .send({data:1})
            .expect(200, done);
    });
});

ルート定義

module.exports = function(app){
    app.get("/route", ....
};

これが本当に探しているものかどうかはよくわかりませんが、ルートを個別にテストする方法です。

于 2013-01-08T22:13:01.703 に答える