2012-01-18 3 views
1

Учитывая следующий Javascript, было бы лучше/более идиоматично вводить объект MyService в myMethod, чтобы можно было ввести ложную версию MyService для тестирования? Или я чего-то не хватает?Idiomatic График зависимости Javascript

var myObject = { 
    myMethod: function() { 
    var myService = new MyService(); 
    return myService.doSomething(); 
    } 
} 

ответ

1

Инъекционная инъекция всегда имеет преимущество перед жестким кодированием зависимостей. Кроме того, путем кодирования на интерфейсы (при условии, что экземпляр myObject был предоставлен экземпляр объекта службы, который имеет метод doSomething()), может пригодиться здесь.

+0

«Интерфейс» Предполагаю, вы имеете в виду, что прототип 'MyService' установлен в' Сервис'? Учитывая, что методы могут динамически меняться в JS, каковы преимущества этого подхода сверх простого переопределения (скажем) 'doSomething' в моем тесте? – Ben

+0

Точно. Он не имеет прироста производительности. Это только делает вашу программу более читаемой, позволяя читателю понять контракт (интерфейс), а затем следовать логике внутри реализации. –

+0

Хорошо. Спасибо за вашу помощь. – Ben