如何在angular2运行时检测到我在e2e测试模式下运行?我有一个会话刷新间隔,我不想在测试模式下设置,以避免与量角器同步问题。
一个明显的答案是寻找一个URL参数。有没有那么脏的解决方案?
编辑(赏金前的澄清):
量角器连接到角度(1或2),以便在评估任何东西之前等待所有未完成的工作完成。这意味着所有未完成的角度promises
或任何活动的角度timer
都会挂起量角器测试(并最终导致它们失败)。最常提出的解决方案是设置browser.ignoreSynchronization = true
,但这会迫使我在回调链中嵌套所有e2e测试或使用一堆睡眠。可能两者都有。因此,我似乎陷入了摇滚和困难的地方之间,要么在编写e2e测试时遇到真正的艰难经历,要么在特定应用程序代码行周围设置条件,以便在测试模式" (呃,丑陋的)。我选择更简单的e2e测试,因为我希望将它们写成数百个,到目前为止我们只讨论一个在测试期间不重要的时间间隔(会话刷新时间间隔为30分钟)。
答案 0 :(得分:1)
您可以通过
开始在angulars区域之外的超时/间隔ngZone.runOutsideAngular(() => {
// start your timeout/interval here
});
这将避免量角器等待超时/间隔完成。有关详细信息,请参阅:https://github.com/angular/protractor/issues/3349
答案 1 :(得分:0)
我认为一个明显的解决方案是在窗口对象上设置全局变量
if(window.TEST_MODE){
// run code that needs to be run during test
}
在您的测试代码集中
window.TEST_MODE = true;