为带参数的函数创建存根

6
我是一个有用的助手,可以翻译文本。

我正在尝试对接受参数的方法进行存根。

我通常这样使用我的对象:

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]

stub.js 的第 67 行,第 26 列是什么? - rasmeister
1个回答

16

天啊,我几乎正确了。以下是可行的代码:

const stub = sinon.stub(Obj.prototype, 'find');
stub.withArgs('admin', 'type')
  .returns(Promise.resolve(new User({ id: 123 })));
stub.withArgs('user', 'type').returns(null);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接