2015-01-22 17 views
21

Bối cảnh: Tôi có một thử nghiệm chấp nhận cho ứng dụng ember-cli của tôi và thử nghiệm chỉ chạy tốt trong Chrome. Tuy nhiên, trong phantomjs, thử nghiệm của tôi không thành công - UI không được tạo theo cùng một cách, và tôi đang cố gắng giải thích tại sao. (Tôi nghĩ rằng bài kiểm tra bị hỏng do https://github.com/ember-cli/ember-cli/issues/1763, nhưng câu hỏi chung về cách gỡ lỗi vẫn còn)Cách gỡ lỗi các thử nghiệm ember-cli chạy trong các phantomjs

Trong Chrome, tôi có thể sử dụng các công cụ gỡ lỗi chuẩn trên các thử nghiệm của mình và tất cả đều tốt - nhưng trong các ma, tôi có thể không nhận được nó với một trình gỡ lỗi. Tôi cũng không thấy thông tin console.log() hiển thị trong đầu ra - tất cả những gì tôi nhận được là một danh sách các kết quả thử nghiệm trong cửa sổ đầu cuối của tôi.

tôi có thể sắp xếp-of nhận được thông tin chẩn đoán bằng cách viết những thứ như

equal(true, false, "This is a log message"); 

và sau đó tôi nhận được thông báo như chi tiết cho sự khẳng định rằng thất bại, hoặc tôi có thể cố gắng và làm việc ra những gì trong DOM với

equal(true, false, document.getElementsByClassName("my-class".innerHTML); 

nhưng cả hai thứ đó: dừng thử nghiệm tiếp tục và b: chỉ cho phép tôi ghi lại thông tin từ bản thân kiểm tra chứ không phải đơn đăng ký của tôi.

Có cách nào để chạy thử nghiệm của tôi ngoài "kiểm tra ember" hay một cách nào đó để đính kèm vào các quy trình thử nghiệm đang chạy không? Ngoài ra, có cách nào để có được thông điệp console.log() hiển thị trong đầu ra không?

Trả lời

12

Bạn có thể hiển thị cổng gỡ lỗi PhantomJS và mở nó trong trình duyệt, sau đó bạn có thể tương tác với ngữ cảnh tại điểm ngắt trình gỡ rối của mình.

Debugging tests on PhantomJS using Testem test runner

+5

Khi tôi đã thử điều đó, tôi có thể đính kèm vào quá trình phantomjs, nhưng sau đó có điều gì đó kỳ lạ xảy ra ở chỗ có vẻ như ember đang nhảy vào và cố gắng nắm bắt các ngoại lệ bị cản trở. Điều đó nói rằng, nó đã nhắc nhở tôi rằng tôi nên sử dụng "kiểm tra ember - máy chủ", và từ đó tôi nhận được tất cả các bản ghi bàn điều khiển hiển thị trong cửa sổ testem, đó là một bước tiến lớn trong đúng hướng. Cảm ơn! –

0

Để trả lời một phần của câu hỏi ban đầu của tôi về "làm thế nào để tôi nhận được thông điệp đăng nhập để hiển thị lên", nếu tôi sử dụng các phóng viên TAP, sau đó console.log (trong ứng dụng của tôi và trong các thử nghiệm của tôi) tin nhắn hiển thị trong đầu ra; các phóng viên xunit không vượt qua console.log trên, mà đã gây nhầm lẫn cho tôi.

(Tôi cũng đã trúng vấn đề nơi chạy thử nghiệm trên TeamCity xử lý khác nhau hơn so với chạy cục bộ; trong tình huống đó, kết hợp với phóng viên TAP với https://github.com/aghassemi/tap-xunit (hoặc plugin TAP TeamCity) cho phép tôi nhận được tin nhắn và cũng đếm kiểm tra đăng nhập)

9

Trong testem.json thêm "phantomjs_debug_port": 9000.

Trong khi bạn chạy thử nghiệm, hãy truy cập http://localhost:9000 trong trình duyệt của bạn và nhấp vào liên kết dài hiển thị.

Nguồn: cssugared

+1

Nếu bạn nhấn bất kỳ vấn đề nào với điều này, hãy đảm bảo rằng một số thứ khác trên máy của bạn không sử dụng cổng 9000 cho một số khác – Knightsy

+0

một cảnh báo cho bất kỳ ai đọc điều này trong năm 2017.thanh tra được tiếp xúc trên cổng 9000 là cực kỳ không ổn định và không sử dụng được cho mục đích dự định của nó. đã thử các cổng khác nhau nhưng nó không có sự khác biệt. –

5

Tôi không có may mắn với những câu trả lời khác, vì vậy đây là những gì tôi phát hiện ra:

Thêm một return pauseTest(); tại điểm trong thử nghiệm của bạn mà bạn muốn để có thể tương tác với trong trình duyệt. Đây là trong các tài liệu nhưng tôi không chắc chắn nó trong các hướng dẫn.

+0

Tôi tìm thấy "tài liệu" trong mã (trong nhận xét). – g13n

+2

Tôi nhận được lỗi rằng 'pauseTest' là không xác định hoặc không phải là một hàm. Tôi đoán tôi phải 'import' nó từ đâu đó, nhưng không chắc chắn như thế nào. – Ernesto

+1

[Ember.Test.pauseTest] (http://emberjs.com/api/classes/Ember.Test.html#method_pauseTest) –

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