มอคค่าพยายามค้นหาไฟล์ทดสอบตามtest
ค่าเริ่มต้นฉันจะระบุ dir อื่นได้server-test
อย่างไร?
มอคค่าพยายามค้นหาไฟล์ทดสอบตามtest
ค่าเริ่มต้นฉันจะระบุ dir อื่นได้server-test
อย่างไร?
คำตอบ:
แก้ไข: ตัวเลือกนี้เลิกใช้แล้ว: https://mochajs.org/#mochaopts
หากคุณต้องการที่จะทำโดยเพียงแค่ยังรันmocha
บนบรรทัดคำสั่ง แต่ต้องการรันการทดสอบในโฟลเดอร์./server-tests
แทน./test
ให้สร้างไฟล์ที่./test/mocha.opts
มีเพียงแค่นี้ในไฟล์:
server-tests
หากคุณต้องการเรียกใช้ทุกสิ่งในโฟลเดอร์และไดเรกทอรีย่อยให้ใส่สิ่งนี้ลงใน test/mocha.opts
server-tests
--recursive
mocha.opts
เป็นข้อโต้แย้งที่ส่งผ่านทางบรรทัดคำสั่งดังนั้นการสร้างบรรทัดแรกเพียงไดเรกทอรีที่คุณต้องการเปลี่ยนการทดสอบก็จะเปลี่ยนเส้นทางจาก ./test/
mocha.opts
ไฟล์ที่สามารถวางได้ทุกที่ที่คุณต้องการจากนั้นก็ดำเนินการmocha
ระบุพา ธ ไปยังไฟล์กำหนดค่าผ่านตัวอย่างเช่น:mocha --opts ./mocha.opts
ใช้สิ่งนี้:
mocha server-test
หรือถ้าคุณมีไดเรกทอรีย่อยให้ใช้สิ่งนี้:
mocha "server-test/**/*.js"
หมายเหตุการใช้เครื่องหมายคำพูดคู่ หากคุณเว้นไว้คุณอาจไม่สามารถทำการทดสอบในไดเรกทอรีย่อยได้
mocha test/server-test
mocha ./**/*.test.js
(ดังนั้นฉันสามารถ colocate ไฟล์ทดสอบด้วยไฟล์โมดูล) รูปแบบหยุดทำงานสำหรับฉันเมื่อฉันเพิ่มไฟล์ทดสอบในระดับที่แตกต่างกันในลำดับชั้นของไฟล์มากกว่าการทดสอบที่เหลือและจะพบว่าไฟล์บอลคี่หนึ่งไฟล์และไม่ใช่โหลอื่น ๆ ที่อยู่ในระดับเดียวกันในลำดับชั้น . การห่อคำพูดคงที่
--recursive
ตามที่ฉันอธิบายด้านล่าง
นี่เป็นวิธีหนึ่งถ้าคุณมีโฟลเดอร์ย่อยในโฟลเดอร์ทดสอบของคุณเช่น
/test
/test/server-test
/test/other-test
จากนั้นใน linux คุณสามารถใช้คำสั่ง find เพื่อแสดงรายการไฟล์ * .js ทั้งหมดซ้ำและส่งต่อไปยัง mocha:
mocha $(find test -name '*.js')
--recursive
ตามที่ฉันอธิบายด้านล่าง
mocha
ไม่มีตัวเลือกในการกำหนดโครงสร้างไดเรกทอรีที่ต้องการในการกำหนดค่า?
วิธีที่ดีในการทำเช่นนี้คือการเพิ่มสคริปต์ "ทดสอบ" npm ใน package.json ที่เรียกมอคค่าด้วยอาร์กิวเมนต์ที่ถูกต้อง วิธีนี้ package.json ของคุณยังอธิบายถึงโครงสร้างการทดสอบของคุณ นอกจากนี้ยังหลีกเลี่ยงปัญหาข้ามแพลตฟอร์มเหล่านี้ในคำตอบอื่น ๆ (คำพูดคู่เปรียบเทียบกับคำพูดเดี่ยว "ค้นหา" ฯลฯ )
หากต้องการให้มอคค่าเรียกใช้ไฟล์ js ทั้งหมดในไดเรกทอรี "test":
"scripts": {
"start": "node ./bin/www", -- not required for tests, just here for context
"test": "mocha test/**/*.js"
},
จากนั้นให้เรียกใช้การทดสอบควันเท่านั้น:
npm test
คุณสามารถสร้างมาตรฐานการทำงานของการทดสอบทั้งหมดในทุกโครงการด้วยวิธีนี้ดังนั้นเมื่อนักพัฒนาใหม่เริ่มโครงการของคุณหรือพวกเขารู้ว่า "การทดสอบ npm" จะทำการทดสอบ มีความสำคัญทางประวัติศาสตร์ที่ดีสำหรับเรื่องนี้ (Maven เช่นโรงเรียนเก่า ๆ ส่วนใหญ่ที่ "ทำ" โครงการด้วย) มันช่วยให้แน่ใจว่า CI เมื่อทุกโครงการมีคำสั่งทดสอบเดียวกัน
ในทำนองเดียวกันคุณอาจมีชุดย่อยของการทดสอบ "ควัน" ที่เร็วขึ้นซึ่งคุณอาจต้องการให้มอคค่าทำงาน:
"scripts": {
"test": "mocha test/**/*.js"
"smoketest": "mocha smoketest/**/*.js"
},
จากนั้นให้เรียกใช้การทดสอบควันเท่านั้น:
npm smoketest
อีกรูปแบบทั่วไปคือการวางการทดสอบของคุณในไดเรกทอรีเดียวกันกับแหล่งที่มาที่พวกเขาทดสอบ แต่เรียกทดสอบไฟล์ * .spec.js ตัวอย่างเช่น: src / foo / foo.js ทดสอบโดย src / foo / foo.spec.js
ในการรันการทดสอบทั้งหมดที่มีชื่อว่า * .spec.js ตามแบบแผน:
"scripts": {
"test": "mocha **/*.spec.js"
},
จากนั้นให้เรียกใช้การทดสอบทั้งหมด:
npm test
อย่าใช้ตัวเลือก -g หรือ --grep รูปแบบนั้นทำงานกับชื่อของการทดสอบด้านใน () ไม่ใช่ระบบไฟล์ เอกสารปัจจุบันทำให้เข้าใจผิดและ / หรือผิดเกี่ยวกับเรื่องนี้ หากต้องการ จำกัด คำสั่งทั้งหมดให้เป็นส่วนหนึ่งของระบบไฟล์คุณสามารถส่งรูปแบบเป็นอาร์กิวเมนต์สุดท้าย (ไม่ใช่แฟล็ก)
ตัวอย่างเช่นคำสั่งนี้จะตั้งค่านักข่าวของคุณเพื่อสเป็ค แต่จะทดสอบไฟล์ js ทันทีภายในไดเรกทอรีทดสอบเซิร์ฟเวอร์:
mocha --reporter spec server-test/*.js
คำสั่งนี้จะทำเช่นเดียวกันกับข้างบนมันจะทำการทดสอบเคสที่สตริง (/) ของการทดสอบเริ่มต้นด้วย "Fnord:":
mocha --reporter spec --grep "Fnord:" server-test/*.js
หากอยู่ในnode.jsการกำหนดค่าใหม่บางอย่างของMocha v6 :
ตัวเลือก 1: สร้าง.mocharc.json
ในไดเรกทอรีรากของโครงการ:
{
"spec": "path/to/test/files"
}
ตัวเลือก 2: เพิ่มmocha
คุณสมบัติในโครงการpackage.json
:
{
...
"mocha": {
"spec": "path/to/test/files"
}
}
รันไฟล์ทั้งหมดในการtest_directory
รวมไดเร็กทอรีย่อยที่ตรงกันtest.js
find ./parent_test_directory -name '*test.js' | xargs mocha -R spec
หรือใช้--recursive
สวิตช์
mocha --recursive test_directory/
ฉันมีปัญหานี้ในตอนนี้และแก้ไขมันโดยการลบ--recursive
ตัวเลือก (ซึ่งฉันตั้งไว้) และใช้โครงสร้างเดียวกันที่แนะนำข้างต้น:
mochify "test/unit/**/*.js"
นี่เป็นการทดสอบทั้งหมดในไดเรกทอรีทั้งหมดภายใต้/test/unit/
สำหรับฉันในขณะที่ละเว้นไดเรกทอรีอื่น ๆ ภายใน/test/
ต่อไปนี้เป็นวัน (ปี 2020)คุณสามารถจัดการได้โดยใช้ไฟล์การกำหนดค่า mocha :
ขั้นตอนที่ 1: สร้างไฟล์. mocarc.jsที่ตำแหน่งรูทของแอปพลิเคชันของคุณ
ขั้นตอนที่ 2: เพิ่มโค้ดด้านล่างในไฟล์มอคค่า:
'use strict';
module.exports = {
spec: 'src/app/**/*.test.js'
};
สำหรับตัวเลือกเพิ่มเติมในไฟล์กำหนดค่าให้อ้างอิงลิงก์นี้: https://github.com/mochajs/mocha/blob/master/example/config/.mocharc.js
ฉันใช้ Windows 7 โดยใช้ node.js v0.10.0 และ mocha v1.8.2 และ npm v1.2.14 ฉันแค่พยายามดึงมอคค่าให้ใช้การทดสอบพา ธ / หน่วยเพื่อค้นหาการทดสอบของฉันหลังจากใช้เวลานานและลองหลาย ๆ สิ่งที่ฉันได้รับ
การใช้ตัวเลือก "test / unit / *. js" ไม่ทำงานบน windows ด้วยเหตุผลที่ดีว่า windows shell ไม่ได้ขยาย wildcard เช่น unixen
อย่างไรก็ตามการใช้ "test / unit" ใช้งานได้โดยไม่มีรูปแบบไฟล์ เช่น. "mocha test / unit" เรียกใช้ไฟล์ทั้งหมดที่พบในโฟลเดอร์ test / unit
สิ่งนี้ยังคงเรียกใช้ไฟล์โฟลเดอร์เดียวเป็นการทดสอบ แต่คุณสามารถส่งชื่อไดเรกทอรีหลาย ๆ ชื่อเป็นพารามิเตอร์
นอกจากนี้ในการเรียกใช้ไฟล์ทดสอบเดียวคุณสามารถระบุพา ธ เต็มและชื่อไฟล์ เช่น. "มอคค่าทดสอบ / หน่วย / mytest1.js"
จริง ๆ แล้วฉันติดตั้งใน package.json สำหรับ "สคริปต์" npm ": {" test ":" mocha test / unit "},
ดังนั้น 'การทดสอบ npm' จะทำการทดสอบหน่วยของฉัน
--recursive
ตัวเลือกดังต่อไปนี้:mocha --recursive "some_dir"
node_modules\.bin\mocha "test\unit\*.js"
งานบน Windows ยังใช้node_modules\.bin\mocha "**\*.js"
งานได้ (กรณีจริงของฉัน) แต่ฉันกำลังมองหาวิธีที่จะแยกไดเรกทอรีnode_modules (ฉันใช้ gulpfile.js ด้วย แต่บางครั้งฉันต้องเปิดการทดสอบโดยตรงกับมอคค่า)
หากคุณกำลังใช้nodejs
ในpackage.json
ภายใต้ของคุณscripts
global (-g)
การติดตั้ง: "test": "mocha server-test"
หรือ"test": "mocha server-test/**/*.js"
สำหรับเอกสารย่อยproject
การติดตั้ง: "test": "node_modules/mocha/bin/mocha server-test"
หรือ"test": "node_modules/mocha/bin/mocha server-test/**/*.js"
สำหรับเอกสารย่อยจากนั้นให้ทำการทดสอบตามปกติ npm test
npm run mocha "./test/*.spec.js!(~)"
ไม่สนใจอาร์กิวเมนต์ glob แต่node_modules/.bin/mocha "./test/*.spec.js!(~)"
ไม่พบ
npm run mocha -- yourArgs
ตามที่ระบุไว้โดย @superjos ในการใช้ความคิดเห็น
mocha --recursive "some_dir"
ดูเหมือนจะไม่เป็นการสนับสนุน "ง่าย" สำหรับการเปลี่ยนไดเรกทอรีทดสอบ
อย่างไรก็ตามบางทีคุณควรดูที่ปัญหานี้เทียบกับคำถามของคุณ
ในฐานะที่เป็น @ test
เจฟฟ์-ผ้ากันเปื้อนแนะนำในรากของโครงการของคุณให้โฟลเดอร์ที่เรียกว่า ในโฟลเดอร์นั้นให้สร้างไฟล์ชื่อmocha.opts
ในโฟลเดอร์ที่ทำให้ไฟล์ที่เรียกว่าตอนนี้ที่ฉันพยายามปรับปรุงคำตอบของเจฟฟ์สิ่งที่ใช้ได้ผลสำหรับฉันคือแทนที่จะระบุชื่อโฟลเดอร์ทดสอบเพียงโฟลเดอร์เดียวฉันระบุรูปแบบเพื่อค้นหาการทดสอบทั้งหมดเพื่อให้ทำงานในโครงการของฉันโดยเพิ่มบรรทัดนี้:
*/tests/*.js --recursive
ใน mocha.opts
หากคุณต้องการระบุโฟลเดอร์ที่แน่นอนเพื่อค้นหาการทดสอบฉันได้ทำสิ่งนี้:
shared/tests/*.js --recursive
server/tests/graph/*.js --recursive
ฉันหวังว่านี่จะช่วยให้ทุกคนที่ต้องการมากกว่าคำตอบอื่น ๆ
.only
และ.skip
จัดการการทดสอบใดที่คุณ กำลังทำงานอยู่ สำคัญในระหว่างการพัฒนาคุณสมบัติเฉพาะเมื่อคุณไม่ต้องการรอให้ชุดทดสอบทั้งหมดทำงานตลอดเวลา