2016-05-26 2 views
1

基本的には、別の関数が呼び出す関数を呼び出すことができるようにパッチを適用したいと思います。これはjsでも可能ですか? (私はMocha/Chai/Sinonを使ってテストしています)。javascriptでテストするための別の関数内のパッチ/モック関数

私がやりたいものの簡易版:

// in render.js 
export helper = function() {} 
export default = function() { 
    helper() 
} 

// in the render-test.js 
import render, { helper } from 'render' 
// what I'd like to to: 
helper = sinon.spy() 
render() 
assert(helper.called, true) 

答えて

3

ことは可能だが、それはいくつかの書き換え、あなたがrender.jshelperを呼び出している最も顕著な方法が必要です。

ここで働く例です:

// render.js 
export function helper() {} 
export default function() { 
    exports.helper() 
} 

// render-test.js 
import render, * as renderFuncs from 'render' 
... 
sinon.spy(renderFuncs, 'helper'); 
render() 
assert(renderFuncs.helper.called) 

後者はあなたからアクセスすることはできませんhelper機能へローカル参照、ですので、あなたがexports.helper()だけではなくhelper()を呼び出す必要な理由がありますテストファイルSinonがhelperへの参照を変更し、スパイとそれを包むことができるように

exportsオブジェクトは、(それが名前renderFuncsを与えています)テストファイルからアクセス可能です。

関連する問題