Помощь заглушки функции внутри класса - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь заглушить метод set в Enmap. Это моя функция (внутри моего Queue класса):

// save queue for persistence
  save() {
    enmap.set('queue', this._queue);
}

Это то, что я сделал до сих пор:

var enmapStub;
  beforeEach(() => {
    enmapStub = sinon.stub(new enmap(), 'set');
  });

  afterEach(() => {
    enmapStub.restore();
  });

Затем, используя это в своем тесте:

describe('#save', () => {
    it("calls enmap.set", () => {
      new Queue({ queueName: 'test', queue: [1,2,3] }).save();
      expect(enmapStub).to.have.been.calledOnce;
    });
  });

Тест не пройден, потому что enmapStub не был вызван?

Я новичок в использовании sinon и насмешливом в целом, поэтому я уверен, что пропустил шаг или что-то в этом роде. Кто-нибудь знает, где я ошибся?

1 Ответ

0 голосов
/ 11 октября 2019

Я определил проблему, так как хотел высмеять метод set другого класса (Enmap), мне нужно было заглушить прототип Enmap следующим образом:

this.enmapStub;
beforeEach(() => {
  this.enmapStub = sinon.stub(enmap.prototype, 'set');
});

afterEach(() => {
  this.enmapStub.restore();
});

заглушить прототип вместоЭкземпляр Enmap работает намного лучше.

...