2017-08-11 6 views

答えて

2

によりSinonは、あなたが実際に面白い状況になってしまいモジュール内の関数をスタブ方法に。あなたの機能は実際にスタブされていますが、スタブされているのはmodule.exports.fooです。元の関数fooは変更されていません。基本的にSinonの機能は、module.exports.{function}を特別な機能を使ってラップすることです。

bar関数にスタブを残したい場合は、直接エクスポートオブジェクトでfooを参照する必要があります。

function bar() { 
    return module.exports.foo() + 1; 
} 

幸運:)

EDIT:私はこのようなことをしたいとき、通常、私は私のモジュールを作成し、この方法は、その機能を使用して...

// module A 

exports.foo = function foo() { 
    return 1; 
} 

exports.bar = function bar() { 
    return exports.foo() + 1; 
} 

その方法モジュール内の何かがスタブ/モック/スパイされると、モジュール内の他のすべてのコールに適用されます。しかし、一般的に私が推薦するのは、どこからでも直接参照したくない関数をスタブする計画を立てようと計画している場合です。 Sinonがオブジェクト上で置換を実行できるように、それらの関数をオブジェクトを通して参照する必要があります。

+0

これは機能しました!ありがとう – Adrian

+0

心配ありません!あなたのモジュールで試すことのできる代替案を追加しました。モジュールで関数をスタブする必要があるときは、常に私のために働くことがわかります。 –

関連する問題