首页 > 解决方案 > 在 Angular 6 测试中修改全局窗口变量

问题描述

我正在尝试使用 e2e 和量角器在 Angular 6 应用程序中测试端到端流程。我有一个将一些 JavaScript 注入页面的服务,所以我的测试验证脚本是否已附加到 DOM。

问题是该服务会检查在 index.html 文件中硬编码的配置对象。我必须将一个特定属性设置为 false 才能运行我的测试,但到目前为止,我还没有设法找到一种方法来挂钩应用程序初始化过程。

我可以使用如下代码进入该物业:

browser.wait(
  browser.executeScript('return window.Config.local;')
         .then(promise => expect(promise).toBe(false)
), 5000);

但问题是在哪里打电话!

我已经花了一些时间来使用 APP_INITIALIZER,但我可以让它工作的唯一方法是在 app.module.ts 文件中设置它。我宁愿不要为了测试目的而改变它的内容。

如果有人知道如何在应用程序完全初始化之前获取窗口对象,我将不胜感激。我已经花了整整三天的时间,仍然没有解决方案......

谢谢!

标签: angulartestingprotractorinitializatione2e-testing

解决方案


推荐阅读