2014-05-19 31 views
6

Tôi chỉ mới bắt đầu với một tập tin ví dụ (example.js) trong đó có những điều khoản sau đây:Hiểu mã số bảo hiểm của Istanbul

x = 42; 
if(false) 
    x = -1; 

tôi không có bất kỳ tập tin đơn vị kiểm tra. nhưng khi tôi chạy

istanbul cover example.js 

tôi thấy một số dữ liệu bảo hiểm dưới đây

=============================== Coverage summary =============================== 
Statements : 66.67% (2/3) 
Branches  : 50% (1/2) 
Functions : 100% (0/0) 
Lines  : 66.67% (2/3) 
============================================================================== 

Liệu có ngụ ý tôi có 2 báo cáo ra khỏi 3 được bảo hiểm? Nếu vậy, làm thế nào nó có thể báo cáo rằng mã này được bảo hiểm khi tôi không có bất kỳ tập tin kiểm tra đơn vị nhắm mục tiêu mã đó?

Từ những gì tôi hiểu theo định nghĩa về phạm vi mã, mã được bao phủ bởi các kiểm tra đơn vị. Tôi không hiểu tại sao istabul lại nói rằng tôi có 2 câu được bảo vệ khi tôi chưa viết bất kỳ bài kiểm tra đơn vị nào.

+0

2 trong 3 câu lệnh sẽ luôn thực thi và 1 sẽ không bao giờ thực thi. Điều này sẽ đúng bất kể thử nghiệm nào bạn chạy trên mã mẫu được cung cấp. – RacerNerd

Trả lời

5

Istanbul kiểm tra xem dòng mã nào đã được chạy. Đơn giản chỉ cần chạy tập tin sẽ thực hiện hai trong số các dòng, và bỏ qua thứ ba. Nếu bạn đã tạo ra một cái gì đó như thế này:

module.exports = { 
    myFunc: function() { 
    x = 42; 
    if(false) { 
     x = -1; 
    } 
    } 
}; 

Bạn muốn có được một kết quả khác nhau (x = 42 sẽ không được chạy ở tất cả). Câu lệnh được thực hiện là module.exports

=============================== Coverage summary =============================== 
Statements : 25% (1/4) 
Branches  : 0% (0/2) 
Functions : 0% (0/1) 
Lines  : 25% (1/4) 
================================================================================ 
+0

khi tôi chỉ có chức năng (không phải là bài tập thay đổi) tại sao tôi vẫn có vùng phủ sóng tuyên bố là 1? Tôi không có bất kỳ câu lệnh nào gọi hàm này. – iRamesh

+0

@iRamesh Khai báo hàm được chạy như một phần của việc chạy tệp. – SomeKittens

+0

Thống kê chi nhánh phát sinh từ đâu? – streetlight

1

example.js giả sử là tệp thử nghiệm. Và nếu bạn muốn bao gồm mã nguồn, hãy chạy với --include-all-sources.

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