2015-09-26 19 views
5

Tôi đang sử dụng khung kiểm tra mocha để kiểm tra phần còn lại của api. Tôi muốn tạo thử nghiệm báo cáo cho tất cả các trường hợp thử nghiệm, nhưng khi tôi chạy mocha --reporter html > report.html
Bắt lỗi sauChạy thử nghiệm mocha nhưng gặp lỗi: Tham chiếuError: tài liệu không được xác định

/usr/local/lib/node_modules/mocha/lib/reporters/html.js:263 
    var div = document.createElement('div'); 
      ^
ReferenceError: document is not defined 
    at fragment (/usr/local/lib/node_modules/mocha/lib/reporters/html.js:263:13) 
    at new HTML (/usr/local/lib/node_modules/mocha/lib/reporters/html.js:53:14) 
    at Mocha.run (/usr/local/lib/node_modules/mocha/lib/mocha.js:459:18) 
    at Object.<anonymous> (/usr/local/lib/node_modules/mocha/bin/_mocha:393:18) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 
    at node.js:902:3 

Trả lời

4

Các phóng viên tên là htmlchỉ được sử dụng khi chạy Mocha trong một trình duyệt . Chạy Mocha từ dòng lệnh sẽ không hoạt động với nó.

Có một phóng viên có tên doc, xuất ra "tài liệu html" theo mocha --reporters. Nhân tiện, khi bạn chạy mocha --reporters bạn sẽ không thấy html được liệt kê làm phóng viên, vì lý do tôi đã nêu ở trên.

0

Bạn nên sử dụng trình duyệt không có đầu để tránh sự cố này. Hãy thử với mocha-phantomjs.

+1

Điều này không có tác dụng đối với tôi vì tôi đang thử nghiệm ứng dụng Node.JS và Mocha-PhantomJS mong đợi các thử nghiệm dựa trên trình duyệt. – Calrion

-1

tôi đã có thể giải quyết một phiên bản đơn giản của vấn đề này bằng cách có điều kiện xác định document:

let document = (typeof document === "undefined") ? {} : document; 

Tôi hy vọng bạn có thể sử dụng phương pháp tương tự, nhưng sẽ cần phải thiết lập document đến cái gì mà chế giễu createElement.

+0

Điều đó không khả thi. OP sẽ không chỉ giả lập 'createElement' mà còn' getElementsByTagName', 'getElementById',' devicePixeRatio', 'width',' height', 'getContext',' style', 'className',' addEventListener', 'innerHTML ', và nhiều hơn thế nữa. Đó là một nhiệm vụ ** khổng lồ **. Trình báo cáo HTML mong đợi một môi trường DOM chính thức. – Louis

+0

Ồ, tôi đã bỏ lỡ lỗi trong mã mocha, không phải mã đang được kiểm tra. Đó là một vấn đề khó khăn hơn. Nguyên tắc có thể vẫn hoạt động, tôi nghĩ rằng có những thư viện làm giả lập một DOM (gần) hoàn chỉnh, nhưng tôi không chắc chắn rằng được tính là "cùng một cách tiếp cận". – ShadSterling

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