Angularjs 量角器测试和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.

我们有一个使用UI路由器构建的应用程序,其中包含一些路由解析。我们正试图对它运行一些量角器测试,但它似乎是默认浏览器。get()并没有等待ui路由器完全解析

这是我们的简单测试

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函数都会阻止它进行解析。