Sinon间谍期望嵌套函数内的函数调用

时间:2016-12-06 21:34:03

标签: javascript testing ecmascript-6 sinon chai

如何使用Sinon间谍检查从当前类内的函数中调用导入的类函数?我试图在导入的类函数上调用.calledOnce方法,但前提是它在其函数容器中调用它。

一个例子说明如下:

<!-- 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被调用一次。但是,我希望通过在foo.fooFn内调用barFn的支票来强化期望。

1 个答案:

答案 0 :(得分:0)

您可以使用arguments.caller例如

来验证调用函数
expect(arguments.caller).equal(bar.barFun);