2016-04-01 26 views
5

Tôi có một ứng dụng angular2 tôi muốn thử nghiệm với thước đo góc.Làm thế nào để thực hiện khoảng thời gian/bỏ phiếu trong angular2 để làm việc với thước đo góc?

Trong ứng dụng này, tôi có một trang có biểu đồ đang được cập nhật thường xuyên với dữ liệu được tạo tự động.

Dường như một tính năng của thước đo góc đang đợi tập lệnh và lệnh gọi http kết thúc trước khi thực thi mã kiểm tra. Tuy nhiên, nếu có một kịch bản bỏ phiếu liên tục không bao giờ kết thúc, thước đo góc sẽ chờ đợi mãi mãi và hết thời gian sau một thời gian nhất định.

Trong angular1, điều này có thể được giải quyết bằng cách thực hiện bỏ phiếu với $interval, mà thước đo không chờ đợi. Đáng tiếc là trong angular2 không có $interval và cách chính xác để thực hiện bỏ phiếu có vẻ là Observable.interval, vì vậy đây là những gì mã của tôi trông giống như:

Observable.interval(500) 
      .map(x => this.getRandomData()) 
      .subscribe(data => this.updateGraph(data)); 

Khi kiểm tra một trang nơi mã này đang chạy, thước đo sẽ thời gian ra. Nó chờ đợi cho trang để hoàn thành tải và nghĩ rằng kịch bản này sẽ thoát ra đôi khi (khi trong thực tế nó chạy mãi mãi).

  • Có một cơ chế khoảng thời gian trong angular2 thước đo công nhận, do đó nó không chờ đợi cho các điểm bỏ phiếu để kết thúc trước khi chạy thử nghiệm giao diện người dùng?

  • Nếu không, làm thế nào tôi có thể yêu cầu thước đo góc không đợi khoảng thời gian này kết thúc trước khi thực thi thêm mã kiểm tra?

EDIT: Để làm rõ, vấn đề thời gian chờ đã tồn tại trong thước đo góc với angular1, nhưng có thể được cố định bằng cách sử dụng $interval, xem:

này không hoạt động trong angular2 vì không có $interval.

+0

@ close-cử tri: Bạn không hiểu phần nào? Tôi sẽ vui lòng giải thích thêm về vấn đề này. – magnattic

+0

Tôi sao chép/đăng bài viết của bạn lên vấn đề thước đo góc: https://github.com/angular/protractor/issues/3349. và bây giờ bạn có giải pháp nào tốt hơn không? – zixia

Trả lời

2

Sau một số điều tra, tôi thấy hai giải pháp khả thi:

  1. browser.ignoreSynchronization = true chỉ thị thước đo để dừng chờ cho các cuộc gọi http và các kịch bản khoảng thời gian. Tuy nhiên, điều này có thể sẽ làm cho các bài kiểm tra viết e2e khó khăn hơn nhiều, bởi vì bây giờ bạn phải tự chờ các phần tử và các trang tải trước khi kiểm tra chúng.
  2. Các protractor-xhr-only plugin về cơ bản cũng giống như ignoreSynchronization, nhưng chỉ cho các tập lệnh khoảng thời gian. Thước đo góc vẫn sẽ đợi cho $http cuộc gọi kết thúc.

Cả hai đều là giải pháp hoàn hảo, nhưng tốt hơn là không có gì.

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