2017-05-26 14 views
1

HapiJSプラグインをテストする最適な方法は何ですか?たとえば、ルートとハンドラを追加する1つのプラグインです。LabでHapiJSプラグインをテストする最良の方法は何ですか?

プラグインを実行するためにHapi.Serverのインスタンスを作成する必要があるため、すべてのプラグインに対して、アプリケーションのルートからすべてのテストを定義する必要がありますか?

または

は、私は私のプラグインのローカルテストでHapi.Serverのインスタンスを取得するために管理する必要がありますか?

2番目のオプションを選択すると、テストするプラグインが依存しないプラグインも含め、すべてのプラグインがサーバーに登録されます。

これにはどのような方法が最適ですか?

ありがとうございます。

答えて

2

Glueを使用している場合は、実行するテスト(またはテストのグループ)ごとにマニフェスト変数を作成できます。マニフェストは、そのテストが適切に実行されるのに必要なプラグインだけを含める必要があります。

initの機能を公開して、実際にサーバーを起動します。小さな例:

import Lab = require("lab"); 
import Code = require('code'); 
import Path = require('path'); 
import Server = require('../path/to/init/server'); 
export const lab = Lab.script(); 
const it = lab.it; 
const describe = lab.describe; 

const config = {...}; 

const internals = { 
    manifest: { 
     connections: [ 
      { 
       host: 'localhost', 
       port: 0 
      } 
     ], 
     registrations: [ 
      { 
       plugin: { 
        register: '../http_routes', 
        options: config 
       } 
      }, 
      { 
       plugin: { 
        register: '../business_plugin', 
        options: config 
       } 
      } 
     ] 
    }, 
    composeOptions: { 
     relativeTo: 'some_path' 
    } 
}; 

describe('business plugin', function() { 

    it('should do some business', function (done) { 

     Server.init(internals.manifest, internals.composeOptions, function (err, server) { 
      // run your tests here 
     }); 
    }); 

}); 

init機能:

export const init = function (manifest: any, composeOptions: any, next: (err?: any, server?: Hapi.Server) => void) { 
    Glue.compose(manifest, composeOptions, function (err: any, server: Hapi.Server) { 

     if (err) { 
      return next(err); 
     } 

     server.start(function (err: any) { 

      return next(err, server); 
     }); 
    }); 
}; 
+0

感謝。私はそれを使用します。 – acmoune

関連する問題