ユニットテストにneo4j Thingdomモジュールを含めるのに苦労していたので(質問:sinonを使用してneo4j Thingdomモジュールの関数をスタブするにはどうすればよいですか)、それを抽象化し、モジュールの周りに単純なラッパーを作成してユニットテストできるようにすることにしました私のモジュールは、抽象化をモック/スタブアウトします。
このモジュールが機能していることは、単体テストやテストを介して構築するのではなく、まだ検証すると思っていました。これは、実際には巧妙な動作がないためです (標準関数をラップするだけです)。データベースを呼び出していることを確認するために、統合テストを行います。基礎となるモジュールが何をすべきかを実行します。
mocha構文を使用してテストファイルを作成し、古き良きコマンドラインがいくつかのテストの作成を開始し、すべてパスしました....問題は、テストを実行するコンテキストで、thingdomモジュールへのメソッド呼び出し(および後続のコール バック) が呼び出されることはなく、何も返されず、テストはパスするだけです。
関数は次のようになります。
NeoProvider.get = function (id, next) {
db.getNodeById(id, function (err, node) {
if (err) return next(err);
next(null, node);
});
};
テスト(「aaa」は、失敗するように一生懸命努力したことです:
it('should get a node from the database based on a specific id', function(){
//var neo = new ();
NeoProvider.get(id, function(err, node){
node.should.eql('aaa');
});
});
奇妙なのは、通常のコンテキスト (サーバー、この場合は Resify) を介して関数を呼び出すと、コードが機能し、ノードが返される (存在しない場合は未定義) ことです。テストランナーを介して実行してみてください。
この引用は正常ですか、それとも私は信じられないほど愚かなことをしましたか (そのほうが理にかなっています)