简化我有以下对象,我想断言已经从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'
});
为什么这不起作用?如何在与测试方法相同的对象上存根方法?
答案 0 :(得分:0)
当你存根时,你基本上不会调用实际函数,并在调用一个函数时检查,使用Args调用存根函数(基本上是它所期望的争论)。
如果您实际上在寻找功能输出,您可能不会将其存根,而是模拟要传递的数据。