0

Я новичок в AngularJS. Из того, что я понимаю, весь смысл инъекции зависимостей заключается в том, что зависимость может быть легко заменена «подобной» зависимостью позже, и код все равно работает одинаково. С «подобным» обычно подразумевается, что зависимость реализует какой-то интерфейс.Интерфейсы для инъекционных услуг в AngularJS

Если я пишу контроллер, и мой сотрудник пишет услугу, которую я собираюсь использовать в своем контроллере, как я могу убедиться, что служба, которую он создает для меня, имеет все, что мне нужно ? На традиционном языке OO его услугой будет класс, реализующий интерфейс, который заставит его реализовать определенные методы. Но как это можно сделать в angularJS? Должен ли я проверить, есть ли у службы свойства для всех методов, которые я хочу, и что __proto__ для всех этих свойств - Function.prototype? И чтобы проверить, что возвращают эти методы, я вызываю их с макетными объектами, а затем проверяю возвращаемый объект? Или есть лучший рекомендуемый способ сделать это?

ответ

0

Это может быть особенность DI, но суть заключается в том, чтобы видеть, где ваши зависимости поступают явно, а не через какое-то магическое глобальное окно.

В JavaScript не существует явного способа обеспечения соблюдения интерфейсов. Ваш коллега создаст либо службу, либо фабрику, которая предоставляет объект с функциями и свойствами, прикрепленными к нему. Опять же, эти функции могут возвращать все, что угодно, и у вас нет средств для обеспечения того, что они возвращают.

Если вы хотите, чтобы ваш коллега возвращал то, что вы ожидаете, может быть хорошей идеей написать модульные тесты и использовать ngMock.

Кроме того, прикрепите к prototype, а не __proto__.

Смежные вопросы