首页 > 解决方案 > SinonJS 间谍调用似乎无法正常工作

问题描述

我正在尝试从类实例中监视方法调用,如下所示:

export class MyClass {
  async method(project, service) {
    console.log('calling my method');
  }
}

然后在我的测试中,我这样做:

const classInstance = new MyClass();
const spy = sandbox.spy(classInstance, 'method');
classInstance.method();
sinon.assert.calledOnce(spy);

奇怪的是,“console.log”被打印出来了,但是 sinon 断言是说该方法没有被调用:\

难道我做错了什么?谢谢!

标签: javascriptnode.jsunit-testingsinonspy

解决方案


它应该工作。我正在使用"sinon": "^8.1.1". 例如

index.ts

export class MyClass {
  async method(project, service) {
    console.log('calling my method');
  }
}

index.test.ts

import { MyClass } from './';
import sinon from 'sinon';

describe('60605728', () => {
  it('should spy', () => {
    const sandbox = sinon.createSandbox();
    const classInstance = new MyClass();
    const spy = sandbox.spy(classInstance, 'method');
    classInstance.method('project', 'service');
    sinon.assert.calledOnce(spy);
  });
});

单元测试结果:

  60605728
calling my method
    ✓ should spy


  1 passing (10ms)

推荐阅读