Shi*_*hti 3 javascript testing angular
我正在尝试做的是基于 Angular 服务中的数据进行一些测试断言,即我们正在尝试创建 E2E 测试,我们使用的工具允许我们为断言执行任意 JavaScript 代码,因此我需要知道是否可以访问 Angular 服务实例。
如何从纯 JS 代码访问 Angular 服务实例?
也就是说,如果我的 Angular 应用程序已部署,并且我在浏览器中打开该应用程序,然后打开 Chrome DevTools,我是否可以访问提供给所有组件的我的 Angular 服务的服务实例?
我知道可以通过ng.probe($0)等方式访问您的组件,但不确定服务。
从我到目前为止的搜索来看,似乎我们必须使用Injector该类,然后使用它的.get()方法来访问 Angular 服务实例之一,但我不确定如何访问Injector该类/实例本身?
下面是我的尝试:ng.probe($0)($0作为<app-root>我的应用程序),然后我看到返回值有一个.injector特性,席力图召ng.probe($0).injector.get('MyServiceName'),就有了一个错误:Uncaught Error: No provider for MyServiceName!。
(即使我在ng.probe上面尝试,我也很想知道如何在没有 ng.probe 的情况下访问注入器,因为在执行自动化测试即 prod 模式期间,我认为我无法做到ng.probe($0))
所以我不确定我是否正在尝试以正确的方式访问它?有任何想法吗?
我正在使用 Angular 4。
小智 8
这对我在 Angular 7 中使用ng.probe():
window.ng.probe(window.getAllAngularRootElements()[0])
.injector.view.root.ngModule._providers
.find(p => p && p.constructor && p.constructor.name === 'MyServiceName');
我想没有其他方法是不可能的 ng.probe()
| 归档时间: |
|
| 查看次数: |
963 次 |
| 最近记录: |