Angularjs 量角器测试和UI路由器未等待解析
我们有一个使用UI路由器构建的应用程序,其中包含一些路由解析。我们正试图对它运行一些量角器测试,但它似乎是默认浏览器。get()并没有等待ui路由器完全解析 这是我们的简单测试Angularjs 量角器测试和UI路由器未等待解析,angularjs,functional-testing,protractor,Angularjs,Functional Testing,Protractor,我们有一个使用UI路由器构建的应用程序,其中包含一些路由解析。我们正试图对它运行一些量角器测试,但它似乎是默认浏览器。get()并没有等待ui路由器完全解析 这是我们的简单测试 describe('coach pages', function() { beforeEach(function() { browser.get("/"); }); it('should have the right title', function() { expect(browser.
describe('coach pages', function() {
beforeEach(function() {
browser.get("/");
});
it('should have the right title', function() {
expect(browser.getTitle()).toBe('The Title');
});
it('should have a heading', function() {
expect(element(by.css('#test')).isPresent()).toBeTruthy();
});
});
第一个经过时,它会找到页面标题,但标题没有
如果我们加上这个
浏览器睡眠(1000)
就在第二个预期过去之前
默认情况下,量角器不应该等待解析完成吗?它是否与UI路由器存在某种冲突
值得补充的是,任何没有解析的路由都会像预期的那样等待解析,它只会影响附加了解析的路由
在执行任何操作之前,量角器要求Angular等待
页面已同步。这意味着所有超时和http
请求已完成
这是一段引自
所以,如果您想让量角器等待一个方法完成,请用$timeout包装它$超时默认时间为0秒。然而,您确实需要实现$timeout调用$apply,这将启动摘要周期。这可能会影响性能。你只需要自己尝试一下
更新
旧的答案不是最好的方法,与我后来使用的方法大不相同
等待页面加载的最可靠方法是等待元素出现或呈现在该页面上。从这个意义上说,这更可靠 只是添加了对github相关问题的引用:只是想知道,当waitForAngular脚本在浏览器中运行时,是否所有javascript函数都会阻止它进行解析。