web-dev-qa-db-ja.com

デフォルトのエクスポートされた関数をスパイする方法

sinon.spyは、オブジェクト名と関数名の2つのパラメーターを取ります。

以下にリストされているモジュールがあります:

module.exports = function xyz() { }

xyzのスパイを定義するにはどうすればよいですか?使用するオブジェクト名がありません。

考え?

11
reza

ES6モジュールのインポート機能を使用している場合、上記は実際には機能しません。私が発見した場合は、実際にそのようにデフォルトをスパイすることができます。

// your file
export default function () {console.log('something here');}

// your test
import * as someFunction from './someFunction';
spyOn(someFunction, 'default')

http://2ality.com/2014/09/es6-modules-final.html で述べられているように

デフォルトのエクスポートは、実際には、特別な名前がデフォルトの名前付きエクスポートです。

したがって、import * as someFunctionを使用すると、module.exportsオブジェクト全体にアクセスでき、デフォルトをスパイできます。

32
Benjamin Hughes