Angular2注入器 - 动态选择服务实现
问题描述:
为了更好地测试和分离前端/后端开发,我们目前正试图找到一种在devMode中提供模拟服务实现的动态方法。Angular2注入器 - 动态选择服务实现
这个想法是在你的环境中指定哪些服务应该被模拟,然后让注入器根据这个返回真实或模拟的实现。
现在的问题是,如果可以为注射器提供的每项服务动态执行此操作,或者如果我们必须为每项服务使用单独的工厂(做同样的事情),现在的问题是?
// pseudo code
onRequestProviderFor(serviceName)
{
if(environment.mockTheseServices.contains(serviceName))
{
return new "Mock"+serviceName.ts
}
else
{
return new serviceName.ts
}
}
这可能吗?并且在注入程序中有没有钩子可以用来做到这一点(在devMode中)?
答
您是否考虑过使用诸如https://github.com/typicode/json-server之类的东西来创建单独的模拟服务器?
我认为它会保持你的项目代码更清洁,不在相同的代码库中包含模拟服务。
+0
有趣,非常感谢,我会研究这个! – TommyF
我认为你需要一个单独的工厂为每一项服务。你可以做一些代码生成,更新桶文件,以便相同的导入导致不同的类。 –
您可以在引导应用程序时添加自定义提供程序,您是否尝试过? – jonrsharpe
你打算在生产环境中使用那个代码'environment.mockTheseServices.contains(serviceName)'吗? –