19 điểm bởi xguru 2024-06-03 | 7 bình luận | Chia sẻ qua WhatsApp

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.filenameimport.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 setTimeoutsetInterval 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

 
cometkim 2024-06-05

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.

 
tsboard 2024-06-03

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é...!

 
[Bình luận này đã bị ẩn.]
 
edunga1 2024-06-03

Wow~ Trong nguyên tác còn nhắc đến Jest nữa nhé.

 
edunga1 2024-06-05

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 :(

 
kandk 2024-06-03

Đúng là tiếp nhận các xu hướng mới cực kỳ nhanh..

 
dylanju 2024-06-03

Và cả mocking gốc!