0

我是新來AngularJS。據我瞭解,依賴注入的全部意義在於,這樣的依賴可以用「相似」的依賴性很容易地交換後,代碼仍然有效相同。對於「相似」,通常意味着依賴實現了某種接口。接口,用於注射服務AngularJS

如果我正在寫一個控制器和我的同事正在寫一個服務,我會在我的控制器使用,我怎麼能確保他正在爲我服務有我需要的所有東西?在傳統的面嚮對象語言中,他的服務將是一個實現接口的類,這將迫使他實現某些方法。但是如何在angularJS中完成呢?我將不得不檢查服務是否有所有我想要的方式,而且__proto__,所有這些屬性是Function.prototype屬性?爲了檢查這些方法返回的內容,我是否使用模擬對象調用它們,然後檢查返回的對象? 或者有更好的方法來做到這一點?

回答

0

這可能是DI的一個特點,但關鍵是要能看到你的依賴,從明確的,而不是他們來正在上演過一些神奇的世界像窗口。

JavaScript有執行接口沒有含蓄的方式。您的同事可以創建一個服務或工廠,爲其提供附帶功能和屬性的對象。同樣,這些函數可以返回任何想要的結果,而且你沒有辦法強制返回它們。

如果你想確保你的同事正在返回你所期望的,它可能是編寫單元測試和使用ngMock一個好主意。

此外,重視prototype而不是__proto__