【问题标题】:Sinon spy expect function invocation within nested functionSinon spy期望嵌套函数中的函数调用
【发布时间】:2017-04-21 16:19:30
【问题描述】:

如何使用 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;
     });
});

在上述情况下,我可以全局监视 fooFn 被调用一次。但是,我想通过检查 foo.fooFnbarFn 中被调用来加强期望。

【问题讨论】:

    标签: javascript testing ecmascript-6 sinon chai


    【解决方案1】:

    您可以使用 arguments.caller 来验证调用者函数,例如

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

    【讨论】:

      猜你喜欢
      • 2018-01-25
      • 2017-02-12
      • 2016-07-11
      • 1970-01-01
      • 2020-08-04
      • 2020-10-26
      • 2017-04-02
      • 1970-01-01
      • 2015-02-12
      相关资源
      最近更新 更多