Я работаю с Typescript в проекте AngularJS 1.X. Я использую разные библиотеки Javascript для разных целей. Для модульного тестирования моего источника я хотел бы заглушить некоторые зависимости, используя Typings (= interfaces). Я не хочу использовать ANY-тип и ни писать пустой метод для каждого метода интерфейса.
Мне нужен способ сделать что-то подобное:
let dependency = stub(IDependency);
stub(dependency.b(), () => {console.log("Hello World")});
dependency.a(); // --> Compile, do nothing, no exception
dependency.b(); // --> Compile, print "Hello World", no exception
Боль, которую я имею прямо сейчас, заключается в том, что я либо использую any
, и реализую все методы, которые вызывают в моем тестовом примере, или я реализую интерфейс и реализую полный интерфейс. Это слишком много бесполезного кода: (.
Как я могу создать объект, который имеет пустую реализацию для каждого метода и набирается? Я использую Sinon для издевательских целей, но я также могу использовать другие библиотеки.
PS: Я знаю, что Typescript стирает интерфейсы... но я все равно хотел бы решить это:).