テストおよび/またはモックしたいモジュールは、いくつかのグローバル変数を使用します。
たとえば、モジュールのソースコードは、変数session
を参照します。この変数は、どこにも定義されていませんが、実行時に使用できます。
モジュールglobals.js
を考えてみましょう:
let globals = {
contextName: "DATA_PIPELINE",
reportContext: "report",
session: session
};
module.exports = globals;
session
はこのファイルでは定義されていませんが、実行時に使用できます。 これは環境のグローバル変数です(私の管理下にはありません)。
偽のタイマーを使用すると、setTimeoutなどのグローバル関数の実装を置き換えることができます。 これをグローバル関数/オブジェクトにどのように適用できますか?
たぶんsinon.replace(object, prop, replacement)
はあなたが探しているものですか?
https://sinonjs.org/releases/v7.2.4/sandbox/#sandboxreplaceobject -property-replacement
GitHubの問題リストを整理し、バグと機能の議論に焦点を当てようとしています。 このチケットは使用法の質問のように見えます。 StackOverflowに投稿し、 sinon
のタグを付けてください。そうすれば、より大きなコミュニティがあなたの質問に答えることができます。
Node.jsでは、次のようなことができます。
global.session = sinon.stub();
// Proceed to import the modules that use the session global and run the tests