与Mocha和Sinon测试的方法相同的对象上的存根/断言方法

时间:2017-04-05 12:40:03

标签: javascript unit-testing mocha sinon

简化我有以下对象,我想断言已经从func调用了subFunc。

export function subFunc(arg) {
  return arg + 'bar';
};

export function func(arg) {
  return subFunc(arg);
};

我有以下测试,它在调用subFunc beeing和预期返回值时都失败了。

即使我正在使用subFunc,原始方法仍在使用。

如果subFunc位于另一个对象而不是测试的对象上,则可以正常工作。

import * as testObject from '../testObject';

...

it('does not work', () => {
  const subFuncStub = sinon.stub(testObject, 'subFunc');
  subFuncStub.returns('something else');

  const value = testObject.func('foo');

  sinon.assert.called(subFuncStub); // Never called
  expect(value).to.be.equal('something else'); // Is 'foobar'
});

为什么这不起作用?如何在与测试方法相同的对象上存根方法?

1 个答案:

答案 0 :(得分:0)

当你存根时,你基本上不会调用实际函数,并在调用一个函数时检查,使用Args调用存根函数(基本上是它所期望的争论)。

如果您实际上在寻找功能输出,您可能不会将其存根,而是模拟要传递的数据。