2016-09-03 19 views
5

Tôi muốn thực hiện lệnhmã tối thiểu để sử dụng Istanbul lập trình

istanbul cover node_modules/mocha/bin/_mocha dist/test 

sử dụng API chương trình Istanbul. Nhưng các tài liệu không nói nhiều về nó, bên cạnh đó mọi thứ đều có thể và liên kết với tài liệu API khổng lồ. Tôi không thể tìm thấy bất kỳ ví dụ ngắn trên internet. Tôi không muốn sinh ra một tiến trình con hoặc sử dụng một mô-đun khác từ NPM. Tôi biết làm thế nào để chạy Mocha lập trình mà không có bảo hiểm, do đó, đó không phải là vấn đề.

+0

Tìm thấy [một số tùy chọn tại đây] (https://github.com/gotwarlost/istanbul/issues/394), nhưng chúng không đủ chi tiết. Thật tuyệt vời khi có được thông tin chi tiết về cách thiết bị/mức độ phù hợp thực sự hoạt động, ít nhất là trong ngữ cảnh được thực hiện theo chương trình với API của Istanbul… – laggingreflex

Trả lời

0

Tôi đã tìm ra một cách để làm điều này, nhưng nó không quá đẹp. Nếu bạn eval (tôi biết!) Mã được thiết kế, Istanbul viết đối tượng phủ sóng cho biến toàn cầu __coverage__. Bạn cũng có thể chỉ định tên của biến toàn cục trong hàm tạo cho trình soạn thảo nếu bạn muốn. Đây là một kịch bản dòng lệnh cho thấy làm thế nào nó có thể được thực hiện:

const istanbul = require('istanbul'); 
const instrumenter = new istanbul.Instrumenter(); 
const collector = new istanbul.Collector(); 
const fs = require('fs'); 
const filename = 'file.js'; 

fs.readFile(filename, 'utf-8', (err, data) => { 
    instrumenter.instrument(data, filename, (err, generatedCode) => { 
    eval(generatedCode); 
    console.log(JSON.stringify(global['__coverage__'])); 
    }); 
}); 

Phần tệp và console.log chỉ để tạo một bản demo hoàn chỉnh. Tất cả những gì bạn thực sự cần là instrumenteval. Dù bạn có tự sử dụng eval ở đây tùy theo bạn hay không.

+0

Có vẻ như nó hoạt động cho một tệp, nhưng cho toàn bộ thử nghiệm Mocha bộ? – felixfbecker

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