2014-07-15 24 views
5

Chúng tôi có một ứng dụng được xây dựng bằng cách sử dụng bộ định tuyến UI với một số giải pháp cho các tuyến đường. Chúng tôi đang cố gắng để chạy một số xét nghiệm thước đo chống lại nó nhưng nó có vẻ như các browser.get mặc định() là không chờ đợi cho router ui để giải quyết đầy đủThử nghiệm Thước đo và Bộ định tuyến Giao diện người dùng không chờ giải quyết

Đây là xét nghiệm đơn giản của chúng tôi

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(); 
    }); 

}); 

Người đầu tiên vượt qua, nó tìm tiêu đề trang, nhưng tiêu đề không phải là

nếu chúng tôi thêm số này

browser.sleep (1000);

ngay trước khi kỳ vọng thứ hai trôi qua?

thước đo không nên chờ cho đến khi kết thúc theo mặc định? có một số loại xung đột với bộ định tuyến UI không?

Giá trị của nó thêm rằng bất kỳ tuyến đường nào không có giải quyết dường như chờ đợi như mong đợi, nó chỉ ảnh hưởng đến các tuyến đường có giải pháp được đính kèm?

+0

Chỉ cần thêm tham chiếu đến vấn đề liên quan trên github: https: //github.com/angular/protractor/issues/789#issuecomment-54083578 – morgs32

Trả lời

0

Trước khi thực hiện bất kỳ hành động nào, Thước đo góc yêu cầu góc tới trang được đồng bộ hóa. Điều này có nghĩa là tất cả thời gian chờ và http yêu cầu đã hoàn tất.

Đó là một trích dẫn từ timeouts from protractor

Vì vậy, nếu bạn muốn có thước đo chờ đợi một phương pháp để hoàn thành, quấn nó với $ timeout. $ timeout thời gian mặc định là 0 giây. Tuy nhiên, bạn cần phải nhận ra $ timeout calls $ apply để bắt đầu chu trình digest. Điều này có thể có ý nghĩa hiệu suất. Bạn chỉ cần thử nó ra cho mình.

Cập nhật

Câu trả lời cũ không phải là phương pháp tốt nhất và hoàn toàn khác với những gì tôi đã sử dụng sau này.

Cách đáng tin cậy nhất để đợi trang được tải là đợi phần tử xuất hiện hoặc hiển thị trên trang đó. Theo nghĩa đó, điều đó đáng tin cậy hơn nhiều.

+0

Chỉ cần tự hỏi, không phải tất cả chức năng javascript đều chặn tập lệnh waitForAngular để giải quyết khi nào nó chạy trong trình duyệt. – Olov

Các vấn đề liên quan