我试图存根一个带参数的方法。
我通常使用我的对象:
const res = await Obj.find('admin', 'type');
这很有效。它要么返回null,要么返回一个对象。
我通常会这样存在:
sandbox.stub(Obj.prototype, 'find', function () {
return Promise.resolve({ id: 123 });
});
我想将其存根以便将参数考虑在内。我一直在阅读http://sinonjs.org/docs/#stubs,它应该如下所示:
const stub = sinon.stub(Obj.prototype.find);
stub.withArgs('admin', 'type')
.returns(Promise.resolve({ id: 123 }));
stub.withArgs('user', 'type').returns(null);
然而我收到错误:
TypeError: Attempted to wrap undefined property undefined as function
at Object.wrapMethod (node_modules/sinon/lib/sinon/util/core.js:114:29)
at Object.stub (node_modules/sinon/lib/sinon/stub.js:67:26)
console.log(Obj.prototype.find);
导致:
[Function: find]
答案 0 :(得分:1)
Arghhh,我几乎是正确的。以下是工作代码:
const stub = sinon.stub(Obj.prototype, 'find');
stub.withArgs('admin', 'type')
.returns(Promise.resolve(new User({ id: 123 })));
stub.withArgs('user', 'type').returns(null);