web-dev-qa-db-ja.com

ES6で静的メソッドを使用して静的メソッドをスタブする方法は?

var MyClassStub = sinon.createStubInstance(MyClass);

MyClassStubには静的メソッドが含まれていません。それを修正するには?

20

静的メソッド:

sinon.stub(YourClass, 'yourClassMethod').callsFake(() => {
  return {}
})

静的メソッドではありません:

sinon.stub(YourClass.prototype, 'yourClassMethod').callsFake(() => {
  return {}
})
13
danday74

Sinonバージョン3.1.0を使用すると、以下のコードを使用してプライベート静的変数をモック(スタブ)できます。

_const YourClass = require('./lib/YourClass');
const mockStaticMethod = sinon.stub(YourClass, '_yourStaticMethod').returns('I am called');
_

Sinon.stub()メソッドの最初のパラメーターはクラス自体であることを覚えておく必要がある唯一のこと。 const yourClassObject = new YourClass();のようなそのクラスのオブジェクトであってはなりません。その理由は、クラスのどのオブジェクトでも静的メソッドにアクセスできないためです。

4
S.Mishra