2016-12-06 79 views
1

如何使用Sinon間諜來檢查導入的類函數是否從當前類中的函數內調用?我試圖在導入的類函數上調用.calledOnce方法,但前提是隻有在其函數容器中調用方法。Sinon間諜期望嵌套函數內的函數調用

一個例子說明如下:

<!-- language: lang-js --> 
// foo.js 
class foo { 
    static fooFn() { 

    } 
} 

// bar.js 
import foo from 'foo'; 

class bar { 
    barFn() { 
     foo.fooFn() 
    } 
} 

// barTest.js 
import { expect, assert } from 'chai'; 
import sinon from 'sinon'; 
import bar from 'bar'; 

describe('barTest',() => { 
    beforeEach(function beforeCallback() { 
     this.fooSpy = sinon.spy(foo, 'fooFn'); 
    }); 

    it('calls foo once',() => { 
     bar.barFn(); 
     expect(foo.fooFn).calledOnce; 
    }); 
}); 

在上述情況下,我能夠全局間諜該fooFn被調用一次。不過,我想通過在barFn之內調用foo.fooFn來加強預期。

回答

0

您可以使用arguments.caller來驗證調用者函數,例如,

expect(arguments.caller).equal(bar.barFun);