以前は次のスタブを完全に実行していました
_sinon.stub(console, 'log', () => {
// Check what the arguments holds
// And either console.info it or do nothing
});
_
たとえば、そこにconsole.info(arguments)
を追加すると、_console.log
_が取得しているものがすべて表示されます。
バージョン_2xx
_では、callsFake
に切り替えました:
_sinon.stub(console, 'log').callsFake(() => {
// Check what the arguments holds
// And either console.info it or do nothing
});
_
これは長く機能します。 console.info(arguments)
にはBazaar値があり、_console.log
_が渡すものとは関係ありません。
何が悪いのですか?
callsFake
に渡す矢印関数は、通常の関数で通常期待するようなarguments
オブジェクトを受け取りません。
矢印関数式の構文は関数式よりも短く、独自のthis、arguments、super、またはnew.target。
アロー関数を通常の無名関数(function() {...}
)に変更するか、spread演算子を使用して引数を明示的にアンパックします。
sinon.stub(console, 'log')
console.log.callsFake((...args) => {
console.info(args)
});