Stub对象函数,用函数解析

问题描述 投票:0回答:2

我正在尝试使用sinon在这个对象中存根save方法

const db = {
  user: {
    findOne: () => Promise.resolve({
      id: '43214321-4321-4321-4321-432143214321',
      save: () => Promise.resolve({ // I WANTED TO STUB THIS METHOD
        id: '43214321-4321-4321-4321-432143214321'
      })
    })
  }
}

通过这个

beforeEach(() => {
  sinon.stub(db.user.findOne, 'save').rejects()
})

我收到了这个错误

 TypeError: Cannot stub non-existent own property save
javascript node.js sinon
2个回答
0
投票
const saveStub = sinon.stub().resolves();`

const findOneObject = {
      save: saveStub
};

sinon.stub(db.user, 'findOne').returns(findOneStub);

如果需要,您可以添加id存根


0
投票

findOne每次被调用时都会解析为一个新对象,因此没有办法在不使用save的情况下删除findOne

const saveStub = sinon.stub().rejects();
sinon.stub(db.user, 'findOne').resolves({
  id: '43214321-4321-4321-4321-432143214321',
  save: saveStub
});
© www.soinside.com 2019 - 2024. All rights reserved.