Ситуация
У меня есть класс 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)
Проблема в том, что я не могу создать заглушкудля этого конструктора. Я попытался:
stubInterface<DBObjectClass>()
из ts-sinon
, но этот подход не имеет конструктора TypeError: this.Class is not a constructor
<DBObjectClass><any>sinon.stub()
, но тогда я не могу проверить, был ли конструкторназывается - и
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
?