2015-10-01 35 views
2

sinon.spy需要2個參數,對象和函數名稱。如何窺視默認導出函數

我有一個模塊,列舉如下:

module.exports = function xyz() { }

如何定義xyz是間諜嗎?我沒有要使用的對象名稱。

想法?

回答

0

sinon#spy也接受單個參數myFunc。從sinon documentation:所提供的功能

var spy = sinon.spy(myFunc);

間諜

因此,我們可以這樣使用它:

var xyz = require('./xyz'); 
sinon.spy(xyz); 
+1

這不適合我。我被告知#node.js,你不能在出口上竄入間諜 – dman

16

上面居然不起作用如果你使用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對象允許您監視默認值。

+5

這是行不通的。 – haxpanel

+0

任何人都發現了一種使用module.exports來做到這一點的方法? –

+0

@PimHeijden檢出模塊[rewire](https://www.npmjs.com/package/rewire)。還有一篇關於[如何使用它]的好博客文章(https://toucantoco.com/en/tech-blog/tech/spy-and-rewire-in-test)。 –