экземпляр ссылочного класса в sinon.stub (myClass.prototype, 'method'). return (); - PullRequest
0 голосов
/ 24 марта 2020

Как я могу сослаться на экземпляр класса в заглушке?

Например, если у меня есть следующий класс:

class myClass {
    x=11;
    myMethod(){return this.x.toString()}
}

Я хотел бы заглушить myMethod во всех будущих экземплярах myClass, но пусть метод по-прежнему возвращает текущий экземпляр класса. Я не могу просто сделать следующее:

sinon.stub(myClass.prototype,'myMethod').returns(this.x.toString());

, потому что this не ссылается на текущий экземпляр класса.

Редактировать: Обновлен пример, так что myMethod обрабатывает this, чтобы вернуть что-то иначе, чем просто вернуть this напрямую

1 Ответ

0 голосов
/ 25 марта 2020

Должно быть stub.returnsThis();. Например,

index.ts:

export class MyClass {
  myMethod() {
    return this;
  }
}

index.test.ts:

import { MyClass } from './';
import sinon from 'sinon';
import { expect } from 'chai';

describe('60838564', () => {
  it('should return instance', () => {
    sinon.stub(MyClass.prototype, 'myMethod').returnsThis();
    const myClass = new MyClass();
    const actual = myClass.myMethod();
    expect(actual).to.be.instanceOf(MyClass);
    expect(actual).to.be.equal(myClass);
  });
});

Результаты модульных испытаний:

  60838564
    ✓ should return instance


  1 passing (12ms)
...