Sinon js AssertError:预期存根被调用一次,但被称为0次

时间:2018-06-05 01:13:09

标签: javascript node.js unit-testing sinon sinon-chai

我一直在学习Sinon JS进行单元测试,我试图让这个示例代码正常工作。我创建了一个简单的“外部”库:

class MyLib {

   simpleMethod () {
      return 'some response';
   }

   static handler() {
      const myLib = new MyLib();
      myLib.simpleMethod();
   }
}

module.exports = MyLib;

然后,我有一个简单的测试套件:

const chai = require('chai');
const sinon = require('sinon');
const MyLib = require('./my-lib');

describe ('sinon example tests', () => {

  it ('should call simpleMethod once', () => {
     let stubInstance = sinon.stub(MyLib, 'simpleMethod');

     MyLib.handler();

     sinon.assert.calledOnce(stubInstance);
  });

});

但是我返回错误“AssertError:预期存根被调用一次,但被调用了0次”。我知道这可能是显而易见的,但为什么simpleMethod没有被调用?

1 个答案:

答案 0 :(得分:2)

simpleMethod是一个实例方法。要存根实例方法,您应该存根原型。

在您的代码中尝试此操作。

myStub = sinon.stub(MyLib.prototype, 'simpleMethod');

请记住在测试结束时恢复存根。

myStub.restore();