ตัวรันทดสอบของ Node.js
- ตอนนี้ Node.js มีฟีเจอร์ตัวรันทดสอบมาให้ในตัวแล้ว
- สามารถเขียนเทสต์ได้โดยอิมพอร์ตโมดูล
node:test ในไฟล์ทดสอบ
- รันเทสต์เดี่ยว:
node --test tests/math.test.js
- ตรวจหาและรันไฟล์ทดสอบโดยอัตโนมัติ
- สามารถใช้โมดูล
assert ที่มีมาในตัวเพื่อตรวจสอบผลการทดสอบได้
- สามารถใช้ test suite และ hook เพื่อจัดกลุ่มและจัดการเทสต์ที่เกี่ยวข้องกันได้
Native mocking ของ Node.js
- ตอนนี้ Node.js มีฟีเจอร์ native mocking มาให้ในตัวแล้ว
- สามารถใช้ความสามารถด้าน mocking ที่เคยมีในเฟรมเวิร์กทดสอบอื่นได้โดยตรงใน Node.js
- สามารถใช้งานฟีเจอร์ mocking ได้ด้วยเมธอด
mock ในโมดูล node:test
Native test coverage ของ Node.js
- test coverage ช่วยให้เข้าใจขอบเขตของการทดสอบในซอร์สโค้ด
- ตั้งแต่ Node.js 20 มีฟีเจอร์ native test coverage ให้ใช้งาน
- สามารถสร้างข้อมูล test coverage ได้ด้วยแฟล็ก
--experimental-coverage
- สามารถระบุส่วนของโค้ดที่ยังไม่ได้ถูกทดสอบได้ผ่านรายงาน coverage
Watch mode ของ Node.js
- watch mode ตรวจจับการเปลี่ยนแปลงของไฟล์แบบเรียลไทม์และรันสคริปต์ใหม่โดยอัตโนมัติ
- ไม่จำเป็นต้องพึ่งพา dependency ภายนอกอย่าง Nodemon
- สามารถตรวจจับการเปลี่ยนแปลงของไฟล์และรันสคริปต์อัตโนมัติได้ด้วยแฟล็ก
--watch
Corepack ของ Node.js
- Corepack ทำหน้าที่เป็นตัวเชื่อมระหว่างโปรเจกต์กับตัวจัดการแพ็กเกจ
- สามารถระบุตัวจัดการแพ็กเกจที่จะใช้ในโปรเจกต์ได้ และ Corepack จะจัดการให้อัตโนมัติ
- สามารถเปิดใช้งาน Corepack ได้ด้วยคำสั่ง
corepack enable
ตัวโหลด .env ของ Node.js
- ตั้งแต่ Node.js 20 มีฟีเจอร์โหลดตัวแปรสภาพแวดล้อมจากไฟล์ .env แบบ native
- สามารถโหลดไฟล์ .env ได้ด้วยแฟล็ก
--env-file
- สามารถโหลดไฟล์ .env หลายไฟล์เพื่อกำหนดค่าสภาพแวดล้อมที่หลากหลายได้
การรองรับ import.meta ของ Node.js
- Node.js v20.11.0 และ v21.2.0 รองรับ
import.meta.filename และ import.meta.dirname
- ทำให้ดึงพาธไฟล์และชื่อไดเรกทอรีได้ง่ายขึ้น
Native timer promises ของ Node.js
- ตั้งแต่ Node.js v15 สามารถใช้ timer ในรูปแบบ promise ได้
- สามารถใช้
setTimeout และ setInterval แบบ promise เพื่อเขียนโค้ดอะซิงก์ให้กระชับขึ้นได้
Permission module ของ Node.js
- เป็นฟีเจอร์ทดลองสำหรับควบคุมการเข้าถึงทรัพยากรของแอปพลิเคชัน Node.js
- สามารถจำกัดการเข้าถึงระบบไฟล์ เครือข่าย ตัวแปรสภาพแวดล้อม และอื่น ๆ ได้ด้วยแฟล็ก
--experimental-permission
Policy module ของ Node.js
- เป็นฟีเจอร์ด้านความปลอดภัยที่ช่วยป้องกันการโหลดโค้ดอันตราย
- สามารถระบุไฟล์นโยบายและควบคุมการโหลดโมดูลได้ด้วยแฟล็ก
--experimental-policy
7 ความคิดเห็น
ไม่มีการพูดถึง
node --runเลยนะครับ ตั้งแต่เวอร์ชันใหม่เป็นต้นไปสามารถรันสคริปต์ได้โดยไม่ต้องพึ่งพา NPM แล้ว ความเร็วตอนเริ่มทำงานเร็วขึ้นหลายสิบเท่าครั้งนี้ตอนลองทำโปรเจ็กต์ tsboard ผมได้ลองเทียบกับรันไทม์ Bun หลายอย่างอยู่เหมือนกัน แล้วก็รู้สึกว่า Node.js ดีแทบทุกอย่าง แต่ก็ยังเสียดายอยู่สองข้อคือ (1) ไม่รองรับ TypeScript (2) ความเร็ว สองอย่างนี้ยังน่าเสียดายอยู่ครับ อย่างเรื่องความเข้ากันได้หรือการที่แทบไม่เลือกฮาร์ดแวร์เลย ผมว่ามันยอดเยี่ยมมากจริง ๆ
ถ้าคุณกำลังพิจารณาเรื่อง TypeScript กับความเร็วในการทำงาน ลองพิจารณา Bun runtime ดูสักครั้งก็ได้ครับ...!
ว้าว~ ในต้นฉบับก็มีการพูดถึง Jest เหมือนกันนะ
ลองย้ายโปรเจ็กต์เล็ก ๆ จาก jest -> node.js ดูแล้ว แต่รองรับฟังก์ชันสำหรับการตรวจสอบน้อยเกินไป เลยไม่ค่อยดีเท่าไหร่ :(
ตามเทรนด์ล่าสุดกันเร็วมากจริง ๆ..
และการทำ mocking แบบเนทีฟ!