2017-12-18 27 views
0

ここで私が働いているコードです:sinon:どのようにインスタンスメソッドをスタブに

Test.js私は「

class Test { 
    constructor() { 
    } 

    func() { 
    console.log('original') 
    } 
} 

module.exports = Test 

Mock.js

Test = require('./Test') 

function Mock(){ 
    this.test = new Test() 
} 

Mock.prototype.call = function() { 
    this.test.func() 
} 

module.exports = Mock 

は、 Test.funcコールをスタブすると、Mock.callになります。私はこれを試しました:

sb = sinon.createSandbox() 
sb.stub(Test, 'func').callsFake(() => { console.log('stubbed') }) 

しかし、私はTypeError: Cannot stub non-existent own property funcを取得します。私はこれを行うとき:

sb.stub(new Test(), 'func').callsFake(() => { console.log('stubbed') }) 
new Mock().call() 

を私はスタブが正常に動作しなかったことを意味し、印刷originalを取得します。どのように関数呼び出しをスタブするのですか?

答えて

1

あなたが作成したインスタンス上で、それをスタブする必要があります: `Mock`コンストラクタでそれを置く

var mock = new Mock(); 

sinon.stub(mock.test, 'func').callsFake(() => { console.log('stubbed') }); 
mock.call(); // should output "stubbed" 
+0

はオプションではありません。これはテストファイルで起こっています。私は 'Mock'クラスの外から関数をスタブする必要があります – ewok

+1

外部から呼び出すために更新されました。 –

関連する問題