sinon.spy需要2個參數,對象和函數名稱。如何窺視默認導出函數
我有一個模塊,列舉如下:
module.exports = function xyz() { }
如何定義xyz
是間諜嗎?我沒有要使用的對象名稱。
想法?
sinon.spy需要2個參數,對象和函數名稱。如何窺視默認導出函數
我有一個模塊,列舉如下:
module.exports = function xyz() { }
如何定義xyz
是間諜嗎?我沒有要使用的對象名稱。
想法?
sinon#spy
也接受單個參數myFunc
。從sinon
documentation:所提供的功能
var spy = sinon.spy(myFunc);
間諜
因此,我們可以這樣使用它:
var xyz = require('./xyz');
sinon.spy(xyz);
上面居然不起作用如果你使用ES6模塊導入功能,如果你是我發現你實際上可以窺探在像這樣的默認值。
// your file
export default function() {console.log('something here');}
// your test
import * as someFunction from './someFunction';
spyOn(someFunction, 'default')
如http://2ality.com/2014/09/es6-modules-final.html
默認的出口實際上只是一個命名出口用特殊的名字默認
所以進口*爲someFunction,您可以訪問整個模塊聲明.exports對象允許您監視默認值。
這是行不通的。 – haxpanel
任何人都發現了一種使用module.exports來做到這一點的方法? –
@PimHeijden檢出模塊[rewire](https://www.npmjs.com/package/rewire)。還有一篇關於[如何使用它]的好博客文章(https://toucantoco.com/en/tech-blog/tech/spy-and-rewire-in-test)。 –
這不適合我。我被告知#node.js,你不能在出口上竄入間諜 – dman