Trình chạy kiểm thử của Node.js
- Node.js hiện đã tích hợp sẵn tính năng test runner
- Có thể viết kiểm thử bằng cách import mô-đun
node:test trong file test
- Chạy một bài kiểm thử đơn lẻ:
node --test tests/math.test.js
- Tự động phát hiện và chạy các file test
- Có thể xác minh kiểm thử bằng mô-đun
assert được cung cấp sẵn
- Có thể dùng test suite và hook để nhóm và quản lý các kiểm thử liên quan
Mocking gốc của Node.js
- Node.js hiện đã tích hợp sẵn tính năng mocking
- Có thể dùng trực tiếp trong Node.js các tính năng mocking mà những framework kiểm thử khác thường cung cấp
- Có thể triển khai mocking bằng phương thức
mock trong mô-đun node:test
Độ bao phủ kiểm thử gốc của Node.js
- Test coverage giúp hiểu phạm vi mã nguồn đã được kiểm thử
- Từ Node.js 20, Node.js cung cấp tính năng test coverage gốc
- Có thể tạo dữ liệu độ bao phủ kiểm thử bằng cờ
--experimental-coverage
- Có thể xác định các vùng mã chưa được kiểm thử thông qua báo cáo coverage
Chế độ watch của Node.js
- Chế độ watch phát hiện thay đổi file theo thời gian thực và tự động chạy lại script
- Không cần phụ thuộc bên ngoài như Nodemon
- Có thể dùng cờ
--watch để phát hiện thay đổi file và tự động chạy script
Corepack của Node.js
- Corepack đóng vai trò cầu nối giữa dự án và trình quản lý gói
- Có thể chỉ định trình quản lý gói sẽ dùng trong dự án và Corepack sẽ tự động quản lý
- Có thể kích hoạt Corepack bằng lệnh
corepack enable
Trình nạp .env của Node.js
- Từ Node.js 20, Node.js hỗ trợ gốc việc nạp biến môi trường từ file .env
- Có thể nạp file .env bằng cờ
--env-file
- Có thể nạp nhiều file .env để thiết lập các môi trường khác nhau
Hỗ trợ import.meta của Node.js
- Node.js v20.11.0 và v21.2.0 hỗ trợ
import.meta.filename và import.meta.dirname
- Có thể lấy đường dẫn file và tên thư mục dễ dàng hơn
Timer promise gốc của Node.js
- Từ Node.js v15, có thể dùng timer ở dạng promise
- Có thể dùng
setTimeout và setInterval như promise để viết mã bất đồng bộ gọn hơn
Mô-đun permission của Node.js
- Tính năng thử nghiệm để kiểm soát quyền truy cập tài nguyên của ứng dụng Node.js
- Có thể dùng cờ
--experimental-permission để giới hạn truy cập vào hệ thống file, mạng, biến môi trường, v.v.
Mô-đun policy của Node.js
- Tính năng bảo mật giúp ngăn chặn việc nạp mã độc
- Có thể dùng cờ
--experimental-policy để chỉ định file policy và kiểm soát việc nạp mô-đun
7 bình luận
Không thấy nhắc đến
node --run. Từ các phiên bản mới nhất, có thể chạy script mà không phụ thuộc vào NPM. Tốc độ khởi động nhanh hơn hàng chục lần.Lần này khi làm dự án tsboard, tôi đã so sánh khá nhiều thứ với runtime Bun, và dù Node.js thật sự rất tốt ở hầu hết mọi mặt, tôi vẫn thấy tiếc ở hai điểm: (1) không hỗ trợ TypeScript (2) tốc độ. Tuy vậy, tôi nghĩ việc nó có tính tương thích rất cao và hầu như không kén tài nguyên phần cứng thực sự rất đáng nể.
Nếu bạn cân nhắc TypeScript, tốc độ thực thi, v.v. thì cũng hãy thử xem xét runtime Bun một lần nhé...!
Wow~ Trong nguyên tác còn nhắc đến Jest nữa nhé.
Tôi đã thử chuyển từ jest sang node.js ở một dự án nhỏ, nhưng hỗ trợ cho các hàm xác thực quá thiếu nên khá chán :(
Đúng là tiếp nhận các xu hướng mới cực kỳ nhanh..
Và cả mocking gốc!