การทดสอบหน่วย Node.js [ปิด]


164

มีกรอบการทดสอบ node.js ที่ดี (ฝั่งเซิร์ฟเวอร์ js) หรือไม่? ฉันกำลังมองหาบางสิ่งที่ลึกกว่าโมดูล Assert ที่ให้มาเล็กน้อย

คำตอบ:


66

ฉันลงเอยด้วยการใช้หน่วยโหนดและฉันมีความสุขมากกับมัน

ตอนแรกฉันใช้Expressoแต่ความจริงที่ว่ามันใช้การทดสอบแบบขนานทำให้เกิดปัญหาเล็กน้อย (ตัวอย่างเช่นการใช้ส่วนควบฐานข้อมูลทำงานได้ไม่ดีในสถานการณ์นี้)


25
Expresso ไม่ได้บังคับให้คุณทำการทดสอบแบบขนาน ป้อนอาร์กิวเมนต์ --serial และมันจะเรียกใช้ทั้งหมดตามลำดับ
einaros

3
เพิ่งดาวน์โหลดและใช้ nodeunit ... ทำสิ่งที่มันบอกว่าทำงานครั้งแรก ftw!
Michael Dausmann

1
Nodeunit ค่อนข้างแปลกที่ต้องทำการทดสอบทุกครั้งเพื่อโทรหา.done()imho
Kos

2
ถ้าฉันได้รับการเริ่มต้นโครงการใหม่ในขณะนี้ผมอาจจะใช้มอคค่าเป็นกรอบการทดสอบ
evilcelery

1
Nodeunit ต้องการ.done()เพื่อรองรับการทดสอบแบบอะซิงโครนัส ฉันยอมรับว่ามันอาจเป็นเรื่องไม่สะดวกสบายเล็กน้อยในบางครั้ง แต่มันก็มีเหตุผลที่ดีสำหรับการทำเช่นนี้
L0j1k

48

ผมยังมองหากรอบทดสอบที่ดีสำหรับโหนดและพบว่า มอคค่า มันเป็นผู้สืบทอดอย่างเป็นทางการของExpressoและดูเป็นผู้ใหญ่มาก

อนุญาตให้ปลั๊กอินไลบรารีการยืนยันที่แตกต่างกันให้บริการกับนักข่าวสำหรับการครอบคลุมโค้ดและสิ่งอื่น ๆ (คุณสามารถปลั๊กอินของคุณเอง) สามารถเรียกใช้การซิงค์หรือ async และมี API ที่รัดกุม

ฉันจะลองและรายงานกลับ ...

แก้ไข:

หลังจากใช้เวลาทุ่มเทอย่างไม่น่าเชื่อกับโครงการอื่น ๆ ในที่สุดฉันก็กลับมาที่โครงการ Javascript และมีเวลาเล่นกับมอคค่า ฉันสามารถแนะนำให้ใช้อย่างจริงจัง การทดสอบอ่านได้อย่างดีมากการรวมเข้ากับอึที่ดีเยี่ยมและการทดสอบดำเนินไปอย่างรวดเร็วมาก ฉันสามารถตั้งค่าแบบสแตนด์อโลนอัตโนมัติเช่นเดียวกับการทดสอบในเบราว์เซอร์ (browserify) และรายงานการครอบคลุมโค้ดที่เกี่ยวข้องในเวลาประมาณครึ่งวัน (ส่วนใหญ่ใช้เวลาในการทำความเข้าใจวิธีการใช้ browserify จากอึก) สำหรับฉันมอคค่าดูเหมือนจะเป็นทางเลือกที่ดีมากสำหรับกรอบการทดสอบ

UPDATE:

ฉันยังคงเชื่อมั่นมากเกี่ยวกับมอคค่า บูรณาการกับชัยอนุญาตให้ปลั๊กอินรูปแบบการยืนยันที่แตกต่างกัน คุณสามารถชำระเงินการตั้งค่าที่ใช้งานได้ในโครงการ GitHubนี้ ตอนนี้ฉันใช้มันกับกรรมรวมการรายงานความครอบคลุมของรหัสผู้เฝ้าดูอัตโนมัติและการรวมที่ดีกับ IntelliJ


ลิงก์โครงการ github เสีย กรุณาต่ออายุใหม่ได้ไหม
karlisup

1
เริ่มต้นกับ Mocha - brianstoner.com/blog/testing-in-nodejs-with-mocha
Nicholas Blasgen

15

ฉันใช้โมดูลยืนยันเป็นการส่วนตัว แต่ก็พบว่าตัวเองต้องการมากขึ้น ฉันได้ดูโมดูลโหนดจำนวนมากและกรอบการทดสอบหน่วยยอดนิยมคือโหนดหน่วยและควร (ซึ่งทำโดยคนเดียวกับ Expresso (อาจเป็นชื่อที่อัปเดตหรือไม่)

คำสัตย์สาบานยังดูมีแนวโน้ม


15
ฉันโหวตให้คุณแค่เล่นสำนวนนั้น
ThomasReggi

15

โดยส่วนตัวฉันติดอยู่กับExpressoแต่มีกรอบการทำงานที่แตกต่างกันออกไปรองรับรูปแบบการทดสอบส่วนใหญ่

Joyent มีรายการที่กว้างขวาง ; ให้ไป


1
Expresso เป็นหนึ่งเดียวที่เหมาะสมสำหรับฉันและทำงานกับโค้ดอะซิงโครนัสอย่างถูกต้อง พยายามสาบานและ qunit ด้วย
balupton

5

vowsเป็นไลบรารีการทดสอบหน่วยทึบสำหรับ node.js แต่ไวยากรณ์นั้นน่าเบื่อ

ฉันได้เขียนสิ่งที่เป็นนามธรรมบางอย่างที่เรียกว่าคำสัตย์สาบานซึ่งทำให้ API chainable

และฉันได้เขียนสิ่งที่เป็นนามธรรมอีกครั้ง [คำสัตย์สาบาน] ซึ่งสร้างขึ้นบนคำสาบานได้อย่างคล่องแคล่วและเปิดเผยไวยากรณ์ลักษณะ BDD

ตัวอย่างจะเป็น

var is = require("vows-is");

is.suite("testing is fun").batch()

    .context("is testing fun?")
        .topic.is("yes")
        .vow.it.should.equal("yes")

.suite().run({
    reporter: is.reporter
});

ตัวอย่างเพิ่มเติม


6
สิ่งที่ถูกต้องคือคำสัตย์สาบานที่น่ากลัว IMO
Donn Felker

ได้เล่นกับคำสาบานด้วยเสื้อคลุมที่น่ารังเกียจ ดูเหมือนว่าเป็นความคิดที่ดีสำหรับการทดสอบ json api แต่เกิดขึ้นอย่างรวดเร็วในระยะสั้น ฉันก็มักจะพบว่า apis ที่มุ่งเน้นไปที่การผูกสายอย่างนี้ยากที่จะใช้และยากที่จะดีบั๊ก พวกเขาดูดีในตัวอย่าง แต่ไม่สามารถทำงานได้ดีภายใต้การใช้งานจริง
drekka

@drekka คำสัตย์สาบานและคำสาบาน - เป็นสิ่งที่น่ากลัว ใช้มอคค่า
Raynos

ลองใช้ตอนนี้ แต่ดูเหมือนจะพบปัญหาที่คล้ายกัน
drekka

คุณต้องใช้มันผิดแล้ว ลองอ่านgist.github.com/2896455 @drekka
Raynos

4

ฉันคิดว่าในกรอบการทดสอบต่าง ๆ ที่มีอยู่มอคค่าเป็นรุ่นล่าสุดและใช้ง่ายมาก นี่คือการสอนที่ยอดเยี่ยมเกี่ยวกับวิธีการใช้: http://thewayofcode.wordpress.com/2013/04/21/how-to-build-and-test-rest-api-with-nodejs-express-mocha/


ดีขอบคุณสำหรับคำชมเชยของคุณเกี่ยวกับการกวดวิชา :)
s0nica

1

หากคุณคุ้นเคยกับQUnitคุณสามารถใช้node-qunitซึ่งเป็นประเภทของ wrapper โหนดรอบกรอบที่มีอยู่ของ QUnit


0

สร้างขึ้นครั้งแรกสำหรับ node.js, deadunitเป็นห้องสมุดทดสอบหน่วย javascript สำหรับ node.js และเบราว์เซอร์ คุณลักษณะบางอย่างที่เป็นเอกลักษณ์:

  • เส้นโค้งการเรียนรู้ง่าย
  • สามารถส่งออกผลการทดสอบในบรรทัดคำสั่ง (สีหรือข้อความธรรมดา) หรือเป็น html
  • มันพิมพ์บรรทัดของรหัสที่แท้จริงของคุณยืนยันดังนั้นเอาท์พุทของคุณทำให้รู้สึกแม้ว่าคุณจะไม่ได้ใช้เวลามากในการเขียนคำวิจารณ์การทดสอบ
  • มันมีการcountยืนยันที่เรียบง่ายที่ทำให้การจัดการกับข้อยกเว้นที่คาดหวังและการยืนยันแบบอะซิงโครนัสง่าย
  • มันพิมพ์ข้อยกเว้นและข้อมูลที่แนบมาใด ๆ ที่พวกเขามี
  • มันจะแจ้งให้คุณทราบว่ารหัสของคุณถูกระงับหรือไม่ (บางสิ่งที่คุณไม่ต้องการ แต่มักจะไม่มีใครสังเกตเห็น)
  • มี API ที่รองรับเหตุการณ์ทำให้สามารถสตรีมผลการทดสอบทั่วทั้งเครือข่ายหรือในแบบที่คุณต้องการ
  • รองรับการทดสอบกับโหนดของเส้นใย

0

ฉันเพิ่งอัปโหลดโครงการฉันกำลังใช้ในการทดสอบหน่วย nodejs กับกรรมและจัสมิน A: narma โมดูลโหนดของคุณโหลดเข้าสู่เบราว์เซอร์ nodewebkit เพื่อให้คุณสามารถดำเนินการโมดูลโหนดและใช้ไลบรารีเช่น jquery ในฮีปเดียวกัน


0

test-studioเป็นแพคเกจ npm ที่ให้ประสิทธิภาพการทำงานส่วนหน้าบนเว็บสำหรับการทดสอบหน่วย มันรองรับสิ่งต่าง ๆ เช่นการดำเนินการทดสอบแบบเดี่ยวหรือแบบกลุ่ม ปัจจุบันสนับสนุนมอคค่าและกรอบมากขึ้นจะได้รับการสนับสนุนในอนาคตความต้องการ

อ่านข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ที่นี่

ข้อจำกัดความรับผิดชอบ: ฉันเป็นผู้เขียน


1
ดูเหมือนคุณเขียนขึ้นใช่มั้ย ถ้าเป็นเช่นนั้นคุณควรเปิดเผยข้อเท็จจริงนั้นในคำตอบของคุณ
strugee
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.