คำตอบ:
เมื่อใช้Jest 21.2.1ฉันสามารถดูการครอบคลุมของโค้ดที่บรรทัดคำสั่งและสร้างไดเร็กทอรีความครอบคลุมโดยส่ง--coverage
ไปยังสคริปต์ Jest ด้านล่างนี้เป็นตัวอย่างบางส่วน:
ฉันมักจะติดตั้ง Jest ในเครื่องซึ่งในกรณีนี้คำสั่งอาจมีลักษณะดังนี้:
npx jest --coverage
ฉันคิดว่า (แม้ว่าจะยังไม่ได้รับการยืนยัน) สิ่งนี้จะใช้ได้เช่นกันหากฉันติดตั้ง Jest ทั่วโลก:
jest --coverage
เอกสารที่กระจัดกระจายอยู่ที่นี่
เมื่อฉันเข้าไปในไดเร็กทอรี coverage / lcov-reportฉันพบไฟล์index.htmlที่สามารถโหลดลงในเบราว์เซอร์ได้ รวมถึงข้อมูลที่พิมพ์ในบรรทัดคำสั่งรวมทั้งข้อมูลเพิ่มเติมและเอาต์พุตกราฟิกบางส่วน
node_modules
ผ่านทาง./node_modules/.bin/jest --coverage
. ตราบใดที่มีการตั้งชื่อแพ็กเกจใน package.json คุณสามารถรับประกันการดำเนินการด้วย jest เวอร์ชันที่คุณคาดหวังได้
UPDATE: 7/20/2018 - เพิ่มลิงค์และชื่อที่อัพเดทสำหรับ coverageReporters
UPDATE: 14/08/2017 - คำตอบนี้ล้าสมัยโดยสิ้นเชิง แค่ดูเอกสาร Jest ตอนนี้ พวกเขามีการสนับสนุนอย่างเป็นทางการและเอกสารเกี่ยวกับวิธีการดำเนินการนี้
@hankhsiao มี repo แยกที่อิสตันบูลกำลังทำงานร่วมกับ Jest เพิ่มสิ่งนี้ลงในการพึ่งพานักพัฒนาของคุณ
"devDependencies": {
"jest-cli": "git://github.com/hankhsiao/jest.git"
}
ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานความครอบคลุมในรายการ package.json jest ของคุณแล้วและคุณยังสามารถระบุรูปแบบที่คุณต้องการได้อีกด้วย (html ค่อนข้างแย่)
"jest": {
"collectCoverage": true,
"coverageReporters": ["json", "html"],
}
ดูเอกสาร JestสำหรับcoverageReporters (ค่าเริ่มต้นคือ ["json", "lcov", "text"]
)
หรือเพิ่ม--coverage
เมื่อคุณเรียกร้องตลก
coverageReporters
["json", "lcov", "text"]
ดูfacebook.github.io/jest/docs/…
สำหรับใครก็ตามที่กำลังมองหาคำถามนี้เมื่อเร็ว ๆ นี้โดยเฉพาะอย่างยิ่งหากทดสอบโดยใช้npm
หรือyarn
โดยตรง
ขณะนี้คุณไม่จำเป็นต้องเปลี่ยนตัวเลือกการกำหนดค่า
ตามเว็บไซต์ทางการของ jestคุณสามารถทำสิ่งต่อไปนี้เพื่อสร้างรายงานความครอบคลุม:
คุณต้องใส่--
ก่อนที่จะผ่านการ--coverage
โต้แย้งของความตลกขบขัน
npm test -- --coverage
หากคุณพยายามเรียกใช้--coverage
โดยตรงโดย--
ไม่ได้ผล
คุณสามารถส่งผ่าน--coverage
ข้อโต้แย้งของความตลกขบขันได้โดยตรง
yarn test --coverage
--watch
ตั้งค่านี้
package.json
คำตอบนี้ทำให้มากสมมติฐานเกี่ยวกับสถานะของคนที่
เอาล่ะไม่ต้องสนใจคำตอบก่อนหน้าของฉันเพราะมีคนบอกฉันว่ามันไม่สามารถแก้ปัญหาได้
คำตอบใหม่:
1) ตรวจสอบ jest ล่าสุด (v 0.22): https://github.com/facebook/jest
2) ทีมงานของ Facebook กำหนดให้อิสตันบูลเป็นส่วนหนึ่งของรายงานความครอบคลุมและคุณสามารถใช้ได้โดยตรง
3) หลังจากดำเนินการ jest คุณจะได้รับรายงานความครอบคลุมบนคอนโซลและภายใต้โฟลเดอร์รูทที่กำหนดโดย jest คุณจะพบรายงานความครอบคลุมในรูปแบบ json และ html
4) FYI หากคุณติดตั้งจาก npm คุณอาจไม่ได้รับเวอร์ชันล่าสุด ดังนั้นลองใช้ github ก่อนและตรวจสอบให้แน่ใจว่าครอบคลุมสิ่งที่คุณต้องการ
คำตอบเก่า:
มีปัญหาเดียวกันเช่นกัน คำตอบสั้น ๆ คือ: Istanbul
และJest
ไม่ได้ทำงานร่วมกัน
ตรวจสอบหน้าต่อไปนี้สำหรับรายละเอียดเพิ่มเติม:
https://github.com/facebook/jest/issues/101
jest ใช้ contextify ซึ่งรันสคริปต์ JS ในบริบท V8 ในโค้ดเนทีฟดังนั้นจึงข้ามความต้องการของ istanbul และ vm.runInThisContext hooks ทั้งหมด ดังนั้นฝาปิดอิสตันบูลจะไม่ทำงานเนื่องจากไม่ได้ใช้ฟังก์ชัน node.js ที่เชื่อมต่อได้มาตรฐานและไฟล์เครื่องมือวัดล่วงหน้าจะไม่ช่วยเนื่องจากการทดสอบทุกครั้งทำงานในแซนด์บ็อกซ์ของตัวเองและไม่มีโกลบอลที่จะซ่อนวัตถุครอบคลุม
@Ciro Costa: ใช้งานconfig.collectCoverage
ไม่ได้เนื่องจากเป็นฟังก์ชัน 'TODO' โปรดตรวจสอบซอร์สโค้ด
หากคุณประสบปัญหากับ --coverage ไม่ทำงานอาจเป็นเพราะมีการเปิดใช้ coverageReporters โดยไม่มีการเพิ่ม "text" หรือ "text-summary" จากเอกสาร: "หมายเหตุ: การตั้งค่าตัวเลือกนี้จะเขียนทับค่าเริ่มต้นเพิ่ม" text "หรือ" text-summary "เพื่อดูสรุปความครอบคลุมในเอาต์พุตคอนโซล" แหล่ง
กำหนดค่าไฟล์ package.json ของคุณ
"test": "jest --coverage",
ตอนนี้เรียกใช้:
yarn test
ฉันมีปัญหาเดียวกันและฉันได้รับการแก้ไขดังต่อไปนี้
npm install --save-dev yarn
npm install --save-dev jest-cli
"jest-coverage": "yarn run jest -- --coverage"
หลังจากที่คุณเขียนการทดสอบให้รันคำสั่ง npm ให้รัน jest-coverage สิ่งนี้จะสร้างโฟลเดอร์ความครอบคลุมในไดเรกทอรีราก /coverage/icov-report/index.html มีมุมมอง html ของการครอบคลุมโค้ด
ขอให้สนุกกับการเขียนโค้ด!
ลองทะลึ่ง เพิ่งเคยใช้ค่ะ และฉันเขียนบล็อกเกี่ยวกับวิธีการรวมใน Visual Studio
นี่คือวิธีที่ฉันใช้รหัสครอบคลุมกับ Chutzpah: http://francorobles.wordpress.com/2014/09/14/code-coverage-with-chutzpah/
require
.