Функция-заглушка объекта, которая разрешается с помощью функции - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь использовать 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

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

findOne разрешается к новому объекту каждый раз, когда он вызывается, поэтому нет способа заглушить save без также заглушки findOne:

const saveStub = sinon.stub().rejects();
sinon.stub(db.user, 'findOne').resolves({
  id: '43214321-4321-4321-4321-432143214321',
  save: saveStub
});
0 голосов
/ 28 февраля 2019
const saveStub = sinon.stub().resolves();`

const findOneObject = {
      save: saveStub
};

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

При необходимости вы можете добавить заглушку id

...