19 ポイント 投稿者 xguru 2024-06-03 | 7件のコメント | WhatsAppで共有

Node.jsテストランナー

  • Node.jsには、基本のテストランナー機能が含まれるようになった
  • テストファイルで node:test モジュールをインポートしてテストを作成できる
  • 単一テストの実行: node --test tests/math.test.js
  • テストファイルを自動検出して実行する
  • 標準搭載の assert モジュールを使ってテストを検証できる
  • テストスイートとフックを使って、関連するテストをグループ化して管理できる

Node.jsネイティブモッキング

  • Node.jsには、ネイティブなモッキング機能も含まれるようになった
  • 他のテストフレームワークが提供していたモッキング機能を、Node.jsで直接使える
  • node:test モジュールの mock メソッドを使ってモッキング機能を実装できる

Node.jsネイティブテストカバレッジ

  • テストカバレッジは、ソースコードのどこまでテストされているかを理解するのに役立つ
  • Node.js 20からネイティブのテストカバレッジ機能が提供されている
  • --experimental-coverage フラグを使ってテストカバレッジデータを生成できる
  • カバレッジレポートを通じて、テストされていないコード領域を特定できる

Node.jsウォッチモード

  • ウォッチモードは、ファイル変更をリアルタイムで検知し、スクリプトを自動的に再実行する
  • Nodemonのような外部依存は不要
  • --watch フラグを使ってファイル変更を検知し、スクリプトを自動実行できる

Node.js Corepack

  • Corepackは、プロジェクトとパッケージマネージャーの橋渡しをする
  • プロジェクトで使うパッケージマネージャーを明示すると、Corepackがそれを自動管理する
  • corepack enable コマンドでCorepackを有効化できる

Node.js .envローダー

  • Node.js 20から、.envファイルから環境変数をネイティブに読み込む機能が提供されている
  • --env-file フラグを使って .env ファイルを読み込める
  • 複数の .env ファイルを読み込んで、さまざまな環境設定に対応できる

Node.js import.metaサポート

  • Node.js v20.11.0 と v21.2.0 で import.meta.filenameimport.meta.dirname をサポート
  • ファイルパスやディレクトリ名をより簡単に取得できる

Node.jsネイティブタイマーPromise

  • Node.js v15から、タイマーをPromise形式で使える
  • setTimeoutsetInterval をPromiseとして使い、非同期コードをより簡潔に書ける

Node.js権限モジュール

  • Node.jsアプリケーションのリソースアクセスを制御する実験的な機能
  • --experimental-permission フラグを使って、ファイルシステム、ネットワーク、環境変数などへのアクセスを制限できる

Node.jsポリシーモジュール

  • 悪意あるコードの読み込みを防ぐセキュリティ機能
  • --experimental-policy フラグを使ってポリシーファイルを指定し、モジュールの読み込みを制御できる

7件のコメント

 
cometkim 2024-06-05

node --run への言及がありませんね。最新バージョンからは NPM に依存せずにスクリプトを実行できます。起動が数十倍速いです。

 
tsboard 2024-06-03

今回 tsboard プロジェクトを進めながら Bun ランタイムとあれこれ比較してみたのですが、Node.js は本当に全体的によいものの、(1) TypeScript をサポートしていないこと (2) 速度、この2点はやはりまだ惜しいです。互換性やハードウェア資源を特に選ばない点などは本当にすごいと思います。

TypeScript や動作速度などを重視するなら、Bun ランタイムも一度検討してみてください...!

 
[このコメントは非表示になっています。]
 
edunga1 2024-06-03

うわ〜、原文でJestへの言及もありますね。

 
edunga1 2024-06-05

小さなプロジェクトで jest から node.js に移行してみたのですが、検証関数のサポートがあまりにも不足していて、いまいちですね :(

 
kandk 2024-06-03

最新のトレンドをものすごく早く取り入れていますね..

 
dylanju 2024-06-03

そしてネイティブモッキングも!