2016-12-03 6 views
1

条件に基づいて異なる引数を持つ別のメソッドBを呼び出すメソッドAをテストしています。だから私はBを偵察したいので、私はそれが呼び出されたかどうかを確認することができます。しかし、スパイは決して呼ばれていません。Sinon Spyが呼び出されない

import parent from '../something.js' 
describe('Testing A',() => { 
    it('should make proper calls to B',() => { 
     var spy = sinon.spy(parent, 'B') 
     parent.A() 
     expect(spy.calledOnce).to.be.true 
    }) 
}) 

とテスト関数Aは、ちょうど

export const A =() => { 
    B() 
} 

だろうAは直接Bを呼び出すための試験では、Bのスパイバージョンが呼び出されないように思えます。 Aのテスト機能をSinonバージョンのBに呼び出すにはどうすればよいですか?

+0

、それ他のモジュールから来ますか? – Hosar

+0

AとBの両方が「親」から来ている – Roy

答えて

1

あなたのコードはテスト可能ではありません。テスト中のモジュールをブラックボックスとして扱い、内部で調整しないでください。あなたの場合、something.jsモジュールの内部にあるメソッドを偵察しようとしています。パラメータとしてに

パスB:

export const A = (B) => { 
    B(); 
} 

それがコールバックされた場合には、テストに非常に簡単です:

Bは、それがモジュールに内蔵だから来てい
import parent from '../something.js' 
describe('Testing A',() => { 
    it('should make proper calls to B',() => { 
     var B = sinon.spy(); 
     parent.A(B); 
     expect(B.calledOnce).to.be.true; 
    }) 
}) 
+0

これは最善の考えです。ありがとう。 – Roy

関連する問題