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

Kei*_*uso 6 functional-testing angularjs 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();
  });

});
Run Code Online (Sandbox Code Playgroud)

第一个通过,它找到页面标题,但标题不是

如果我们加上这个

browser.sleep(1000);

就在第二个期望它通过之前?

量角器是否应该等待结果默认完成?是与UI路由器的某种冲突?

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

Tim*_*ong 0

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

这是来自量角器超时的引用

因此,如果您想让量角器等待方法完成,请用 $timeout 包装它。$timeout默认时间是0秒。但是,您确实需要意识到 $timeout 调用 $apply 来启动摘要周期。这可能会对性能产生影响。你只需要自己尝试一下。

更新

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

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