爲了更好地測試和分離前端/後端開發,我們目前正試圖找到一種在devMode中提供模擬服務實現的動態方法。Angular2注入器 - 動態選擇服務實現
這個想法是在你的環境中指定哪些服務應該被模擬,然後讓注入器根據這個返回真實或模擬的實現。
現在的問題是,如果可以爲注射器提供的每項服務動態執行此操作,或者如果我們必須爲每項服務使用單獨的工廠(做同樣的事情),現在的問題是?
// pseudo code
onRequestProviderFor(serviceName)
{
if(environment.mockTheseServices.contains(serviceName))
{
return new "Mock"+serviceName.ts
}
else
{
return new serviceName.ts
}
}
這可能嗎?並且在注入程序中有沒有鉤子可以用來做到這一點(在devMode中)?
我認爲你需要一個單獨的工廠爲每一項服務。你可以做一些代碼生成,更新桶文件,以便相同的導入導致不同的類。 –
您可以在引導應用程序時添加自定義提供程序,您是否嘗試過? – jonrsharpe
你打算在生產環境中使用那個代碼'environment.mockTheseServices.contains(serviceName)'嗎? –