Sinon stub mongoose save для разрешения объекта, который называется save - PullRequest
0 голосов
/ 09 мая 2019

У меня есть следующий код:

const newImage = new Image(...);
newImage.save().then(image => {...})

Есть ли способ заглушки метода сохранения для Image для разрешения объекта, который его вызвал?то есть.Я хочу, чтобы image в предложении then было таким же, как newImage

Что-то вроде sinon.stub(Image.prototype, 'save').resolves(theCallingObject);

Возможно ли это?Любая помощь приветствуется.Спасибо!

1 Ответ

1 голос
/ 09 мая 2019

Вы можете использовать callsFake для макетирования метода-прототипа ...

... и если вы передадите ему нормальную функцию (не функцию стрелки), тогда this будет экземпляром внутримакет функции:

const sinon = require('sinon');
const assert = require('assert');

class Image {
  async save() {
    return 'something else';
  }
}

it('should work', async function() {
  sinon.stub(Image.prototype, 'save').callsFake(
    function() {  // <= normal function
      return Promise.resolve(this);  // <= this is the instance
    }
  );
  const newImage = new Image();
  const result = await newImage.save();
  assert.strictEqual(result, newImage);  // Success!
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...