次Sinonで無名関数をスタブするにはどうしたらいいですか?
const sinon = require('sinon')
const a =() => { return 1 }
sinon.stub(a)
はTypeError: Attempted to wrap undefined property undefined as function
をスローします。
stub
オブジェクトがある場合は機能するので、私はthis
を使ってみました。 Node.jsのREPL(v6.11)では:
> const a =() => { return 1 }
undefined
> this.a
[Function: a]
しかし、私のモカ仕様では、それは失敗します。
const a =() => { return 1 }
console.log(a)
// => [Function: a]
console.log(this.a)
// => undefined
私は何をしないのですか?どうすればこの作品を作れますか?
私はのようにオブジェクトのメソッドを以下のように書くことができます:const stub = sinon.stub(object, 'a')
しかし、これは私がこの質問でここにしたものではありません。
の可能性のある重複した[例外TypeError:関数として未定義のプロパティをラップしようとしました](https://stackoverflow.com/
別の回避策は、(それはお勧めしませんが)自分で
this
と結合することです質問/ 42271151/typeerror-to-wrap-undefined-as-function) –実際は重複していません。これはセッター/ゲッターに関するものではありません。 –
このように動作させることはできません。スタブの場合、Sinonはルートオブジェクトでスタブする関数参照を置き換える必要があるため、 "ルートオブジェクト"を必要とします。 REPLの 'this 'は、REPLがどのように実装されているかによってのみ機能します。 – robertklep