Заглушка конструктора интерфейса Typescript sinon - PullRequest
0 голосов
/ 04 октября 2019

Ситуация

У меня есть класс A со свойством class, равным Interface конструктора.

Пример:

class A {
  public Class: DBObjectClass
  public get instance(): DBObject {
    return new this.Class()
  }
}

DBObjectClass определение

Выпуск

Моя цель создать заглушку следующим образом:

const a = new A()
const stub = ???
a.Class = stub
sinon.assert.calledOnce(stub) 

Проблема в том, что я не могу создать заглушкудля этого конструктора. Я попытался:

  1. stubInterface<DBObjectClass>() из ts-sinon, но этот подход не имеет конструктора TypeError: this.Class is not a constructor
  2. <DBObjectClass><any>sinon.stub(), но тогда я не могу проверить, был ли конструкторназывается
  3. и Object.setPrototypeOf подход, но затем я получаю 'DBObjectClass' only refers to a type, but is being used as a value here.. Пример:
  const stub = sinon.stub()
  Object.setPrototypeOf(DBObjectClass, stub)

Вопросы

Могу ли я создать заглушку следующим образом? Это в корне неправильно, я должен заглушить A.instance?

...