Mã bảo hiểm cho Jest


131

Có cách nào để có phạm vi bảo hiểm mã trong khung thử nghiệm Javascript Jest được xây dựng trên Jasmine không?

Khung bên trong không in ra phạm vi bảo hiểm mã mà nó nhận được. Tôi cũng đã thử sử dụng Istanbul , chănCông ty Cổ phần , nhưng không ai trong số họ làm việc.


Tôi không thích lắm, nhưng bạn đã thấy config.collectCoverage chưa?
Ciro Costa

Câu trả lời:


123

Khi sử dụng Jest 21.2.1 , tôi có thể thấy phạm vi bảo hiểm mã ở dòng lệnh và tạo thư mục bảo hiểm bằng cách chuyển --coverageđến tập lệnh Jest. Dưới đây là một số ví dụ:

Tôi có xu hướng cài đặt Jest cục bộ, trong trường hợp đó lệnh có thể trông như thế này:

npx jest --coverage

Tôi giả sử (mặc dù chưa được xác nhận), rằng điều này cũng sẽ hoạt động nếu tôi cài đặt Jest trên toàn cầu:

jest --coverage

Các tài liệu rất thưa thớt ở đây

Khi tôi điều hướng vào thư mục vùng phủ sóng / báo cáo, tôi đã tìm thấy một tệp index.html có thể được tải vào trình duyệt. Nó bao gồm thông tin được in tại dòng lệnh, cộng với thông tin bổ sung và một số đầu ra đồ họa.


7
Không bao giờ sử dụng các mô-đun toàn cầu. Để đảm bảo tính nhất quán của phiên bản và sự hiện diện của gói, luôn luôn sử dụng tệp thực thi trong node_modulesthông qua ./node_modules/.bin/jest --coverage. Miễn là gói được đặt tên trong pack.json, bạn có thể đảm bảo thực thi với phiên bản chính xác của trò đùa mà bạn mong đợi.
taystack

Làm thế nào để có được bảo hiểm jest chỉ cho các tập tin thay đổi?
Shanika Ediriweera

Có cách nào dễ dàng để thất bại trong các bài kiểm tra nếu phạm vi bảo hiểm dưới một giới hạn nhất định không? Câu hỏi SO tương ứng: stackoverflow.com/questions/60512167/ từ
Stefan


88

CẬP NHẬT: 7/20/2018 - Đã thêm các liên kết và tên cập nhật cho vùng phủ sóng.

CẬP NHẬT: 14/8/2017 - Câu trả lời này hoàn toàn lỗi thời. Chỉ cần nhìn vào các tài liệu Jest bây giờ. Họ có hỗ trợ và tài liệu chính thức về cách làm điều này.

@hankhsiao đã có một repo ngã ba nơi Istanbul đang làm việc với Jest. Thêm phần này vào phần phụ thuộc dev của bạn

 "devDependencies": {
     "jest-cli": "git://github.com/hankhsiao/jest.git"
 }

Ngoài ra, hãy đảm bảo phạm vi bảo hiểm được bật trong mục nhập jest pack.json của bạn và bạn cũng có thể chỉ định các định dạng bạn muốn. (Html ​​là ass khá xấu).

 "jest": {
     "collectCoverage": true,
     "coverageReporters": ["json", "html"],
 }

Xem tài liệu Jest để biết phạm vi bảo hiểm (mặc định là ["json", "lcov", "text"])

Hoặc thêm --coveragekhi bạn gọi jest.


1
Tùy chọn coverFormats đã bị xóa - có vẻ như json và html đều được tạo mỗi lần.

1
Tôi sử dụng tùy chọn - bao bì nhưng hoàn toàn không có gì khác nhau xảy ra.
gbbr

3
Nó (bây giờ) được gọi coverageReportersvà mặc định là ["json", "lcov", "text"]. Xem facebook.github.io/jest/docs/ từ
Karsten S.

không hoạt động, không biết tùy chọn "coverFormats" có giá trị ["json", "html"].
srghma

40

Tháng 1 năm 2019: Phiên bản Jest 23.6

Đối với bất cứ ai nhìn vào câu hỏi này gần đây đặc biệt là nếu thử nghiệm bằng cách sử dụng npmhoặc yarntrực tiếp

Hiện tại, bạn không phải thay đổi các tùy chọn cấu hình

Theo trang web chính thức của jest , bạn có thể làm như sau để tạo báo cáo bảo hiểm:

1- Đối với npm:

Bạn phải đặt --trước khi vượt qua --coverageđối số của jest

npm test -- --coverage

nếu bạn cố gắng gọi --coveragetrực tiếp mà không có --nó sẽ không hoạt động

2- Đối với sợi:

Bạn có thể truyền --coveragetrực tiếp đối số của jest

yarn test --coverage

1
Làm thế nào để có được bảo hiểm jest chỉ cho các tập tin thay đổi?
Shanika Ediriweera

Thay đổi từ khi nào? Bạn có thể muốn sử dụng các --watchthiết lập cho việc này.
koehn

1
Câu trả lời này làm cho rất nhiều giả định về tình trạng của những người package.json.
airtonix

6

Được rồi, bỏ qua câu trả lời trước đây của tôi vì ai đó nói với tôi rằng nó không giải quyết được vấn đề.

Câu trả lời mới:

1) Kiểm tra trò hề mới nhất (v 0,22): https://github.com/facebook/jest

2) Nhóm facebook đặt istanbul như một phần của báo cáo bảo hiểm và bạn có thể sử dụng nó trực tiếp.

3) Sau khi thực hiện jest, bạn có thể nhận được báo cáo bảo hiểm trên bảng điều khiển và trong thư mục gốc được đặt bởi jest, bạn sẽ tìm thấy báo cáo bảo hiểm ở định dạng json và html.

4) FYI, nếu bạn cài đặt từ npm, bạn có thể không nhận được phiên bản mới nhất; vì vậy hãy thử github trước và đảm bảo phạm vi bảo hiểm là những gì bạn cần.


Câu trả lời cũ:

Có cùng một vấn đề là tốt. Câu trả lời ngắn gọn là: IstanbulJest KHÔNG làm việc cùng nhau.

Kiểm tra các trang sau để biết thêm chi tiết:

https://github.com/facebook/jest/issues/101

jest sử dụng bối cảnh chạy các tập lệnh JS trong ngữ cảnh V8 trong mã gốc, do đó bỏ qua tất cả các yêu cầu và vm.runIn ThisContext của istanbul. Vì vậy, vỏ bọc istanbul sẽ không hoạt động do các hàm node.js có thể móc nối tiêu chuẩn không được sử dụng và các tệp tiền sử dụng sẽ không giúp ích gì vì mọi thử nghiệm đều chạy trong hộp cát của chính nó và không có đối tượng nào có thể chứa đối tượng phủ sóng.

@Ciro Costa: config.collectCoverageKHÔNG hoạt động, vì đó là chức năng 'TODO'. Vui lòng kiểm tra mã nguồn.


Câu hỏi là làm thế nào để có được bảo hiểm Code cho Jest. Việc Istanbul và Jest không hợp tác với nhau có thể đúng, nhưng điều đó không trả lời được câu hỏi.
David Raab

0

Nếu bạn gặp sự cố với - bao bì không hoạt động, điều đó cũng có thể là do tính năng bảo hiểm được kích hoạt mà không có 'văn bản' hoặc 'tóm tắt văn bản' được thêm vào. Từ các tài liệu: "Lưu ý: Đặt tùy chọn này ghi đè các giá trị mặc định. Thêm" văn bản "hoặc" tóm tắt văn bản "để xem tóm tắt bảo hiểm trong đầu ra của giao diện điều khiển." Nguồn


0

Định cấu hình tệp pack.json của bạn

"kiểm tra": "jest - bao bì",

nhập mô tả hình ảnh ở đây

Bây giờ chạy:

yarn test

Tất cả các bài kiểm tra sẽ bắt đầu chạy và bạn sẽ nhận được báo cáo. nhập mô tả hình ảnh ở đây


-1

Tôi đã có cùng một vấn đề và tôi đã sửa nó như dưới đây.

  1. cài đặt sợi npm install --save-dev yarn
  2. cài đặt jest-cli npm install --save-dev jest-cli
  3. thêm phần này vào gói.json "jest-coverage": "yarn run jest -- --coverage"

Sau khi bạn viết các bài kiểm tra, hãy chạy lệnh npm chạy phạm vi bảo hiểm. Điều này sẽ tạo thư mục bảo hiểm trong thư mục gốc. /coverage/icov-report/index.html có chế độ xem html về phạm vi bảo hiểm mã.

Chúc mừng mã hóa!


8
Không cần phải cài đặt sợi. Sợi chỉ là trình quản lý gói khác với NPM
Black

-10

Hãy thử Chutzpah . Tôi vừa mới sử dụng nó. Và tôi đã viết về nó về cách tích hợp trong Visual Studio.

Đây là cách tôi đã thực hiện bảo hiểm mã với Chutzpah: http://francorobles.wordpress.com/2014/09/14/code-coverage-with-chutzpah/


Chutzpath được xây dựng trên đỉnh của Chăn và tôi đã chỉ định ở trên rằng Jest không hoạt động với nó.
Alex Palcuie

Thú vị vì tôi chỉ làm việc. francorobles.wordpress.com/2014/09/14/ từ
francorobles

1
Bạn không sử dụng Jest, mà theo mặc định là giả require.
Alex Palcuie
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.