量角器测试和UI路由器不等待解析

时间:2014-07-15 20:25:04

标签: angularjs functional-testing protractor

我们有一个使用UI路由器构建的应用程序,其中包含一些路由解析。我们正试图对它进行一些量角器测试,但似乎默认的browser.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();
  });

});

第一个传递,它找到页面标题,但标题不是

如果我们添加此

browser.sleep(1000);

在第二个期待它通过之前?

不应该是量角器等待结果默认完成?是与UI路由器发生某种冲突吗?

值得补充的是,任何没有解决它的路线似乎都按预期等待它,它只影响附加了解决方案的路线?

1 个答案:

答案 0 :(得分:0)

  

在执行任何操作之前,Protractor要求Angular等到   页面已同步。这意味着所有超时和http   请求已完成。

这是来自timeouts from protractor

的引用

因此,如果您希望量角器等待方法完成,请使用$ timeout包装它。 $ timeout默认时间为0秒。但是,您确实需要实现$ timeout调用$ apply,这将启动摘要周期。这可能具有性能影响。你只需要自己尝试一下。

<强>更新

旧答案不是最好的方法,与我后来使用的方法完全不同。

等待加载页面的最可靠方法是等待在该页面上显示或呈现元素。从这个意义上说,这更可靠。