Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Sinon spy期望在嵌套函数中调用函数_Javascript_Testing_Ecmascript 6_Sinon_Chai - Fatal编程技术网

Javascript Sinon spy期望在嵌套函数中调用函数

Javascript Sinon spy期望在嵌套函数中调用函数,javascript,testing,ecmascript-6,sinon,chai,Javascript,Testing,Ecmascript 6,Sinon,Chai,如何使用Sinon spy检查导入的类函数是否从当前类内的函数中调用?我试图在导入的类函数上调用.calledOnce方法,但仅当它在其函数容器中被调用时 示例如下所示: <!-- language: lang-js --> // foo.js class foo { static fooFn() { } } // bar.js import foo from 'foo'; class bar { barFn() { foo.fooFn(

如何使用Sinon spy检查导入的类函数是否从当前类内的函数中调用?我试图在导入的类函数上调用
.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;
     });
});

//foo.js
福班{
静态fooFn(){
}
}
//bar.js
从“foo”导入foo;
分类栏{
barFn(){
foo.fooFn()
}
}
//巴特斯特js
从'chai'导入{expect,assert};
从“sinon”进口sinon;
从“bar”导入bar;
描述('barTest',()=>{
beforeach(函数beforeCallback(){
this.fooSpy=sinon.spy(foo,'fooFn');
});
它('调用foo一次',()=>{
bar.barFn();
expect(foo.fooFn).calledOnce;
});
});

在上述情况下,我能够全局监视
fooFn
被调用一次。但是,我想通过检查
foo.fooFn
是否在
barFn

中调用来加强expect。您可以使用参数验证调用方函数

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

您可以使用参数验证调用方函数

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