ノード18が利用可能になりました!😎


この小さなポストでは、NODEJS 18の新機能をテストします.
ノード.JS 18は2022年10月に長期支援(LTS)に移行する.
ノード.JSの18リリース、私はいくつかの新機能を強調します.
エキサイティングな新機能が含まれます:
  • 実験的なフェッチ
  • テストランナー
  • ecmascriptモジュールの改良
  • は、abortcontrollerとabortsignal
  • のためのサポートを改善しました
  • はプラットホーム支持
  • を更新しました
    他の特徴の間で.
    今日では、いくつかの例を試してみることになります.findlastと配列.表面的方法におけるfindlastindex

    このリポジトリからすべてのコードを得ることができます


    始める


    では、パッケージを作成しましょう.JSONコマンド
    npm init -y
    
    あなたがofficial pageからノードのバージョン18をインストールしなければならないのを思い出してください
    現在、インデックスとなるファイルを作成します.我々が我々のテストを書き始めるJS.
    まず始めましょう.
    import test from "node:test";
    import assert from "node:assert";
    
    私たちは、node:に先立って来なければならない2つのAPIを持っていることを確認します.
    これをインポートすると、我々は今我々の最初のテストを書くことができます.

    文字列をテストします


    test("Testing a string", () => {
       assert.match("Welcome Node 18", /Node 18/);
    });
    
    このテストでは以下の出力を行います.
    ok 1 - Testing a string
      ---
      duration_ms: 0.000385918
      ...
    
    まず最初に、最初のパラメータとして記述を受け取るテストメソッドと、2番目のパラメータとしてコールバックを使用します
    文字列をアサートするには、最初のパラメータとしてテストしたい文字列を渡し、2番目のパラメータとして、前のコードで見た正規表現を送信します.
    また、オプションの3番目のパラメータを送信することができますが、カスタムエラーメッセージとして機能します.例を見ましょう.
    test("Testing a string fails", () => {
       assert.match("Hello", /world/, 'This string does not contain "world"');
    });
    
    このテストでは以下の出力を行います.
    ❯node index.test.js 
    not ok 1 - Testing a string fails
      duration_ms: 0.000888784
      failureType: 'testCodeFailure'
      error: 'This string not contains "world"'
      code: ERR_ASSERTION
      stack: |-
        TestContext.<anonymous> (file:///Users/jordandev/Desktop/node18/index.test.js:5:10)
        Test.runInAsyncScope (node:async_hooks:202:9)
        Test.run (node:internal/test_runner/test:333:20)
        Test.start (node:internal/test_runner/test:287:17)
        Test.test (node:internal/test_runner/harness:126:18)
        file:///Users/jordandev/Desktop/node18/index.test.js:4:1
        ModuleJob.run (node:internal/modules/esm/module_job:198:25)
        async Promise.all (index 0)
        async ESMLoader.import (node:internal/modules/esm/loader:409:24)
        async loadESM (node:internal/process/esm_loader:85:5)
      ...
      tests 1
      pass 0
      fail 1
      skipped 0
      todo 0
      duration_ms 0.062970366
    
    
    エラーが発生すると、カスタムエラーが表示されます.

    等しいとnotequal


    ここで2つの値をテストすることができるようになります.
    test("Testing that a number is equal", () => {
       let current = 99;
       let expected = 99;
       assert.equal(actual, expected);
    });
    
    test("Testing that a number is not equal", () => {
       let current = 22;
       let expected = 393;
       assert.notEqual(actual, expected, `${actual} is not equal to ${expected}`);
    });
    
    ご覧のように、2番目のパラメータとして現在の値を受け取ります.
    テストを実行してください
    node index.js
    

    ディープstrictequal


    オブジェクトをテストするつもりです.このため、DeepstricteQualメソッドを使用して、オブジェクトのプロパティをテストするのに役立ちます.
    test("Testing objects", () => {
       assert.deepStrictEqual(
         { name: "jordan" },
         { name: "jordan" },
         "Objects are not equal"
       );
    });
    

    非同期機能のテスト


    非同期関数をテストするには、非同期コールバックを使用しなければなりません.この方法で、約束を解決できるように待機します.
    test("Testing asynchronous functionality", async() => {
       const number = await Promise.resolve(90);
       assert.equal(number, 90, "The number is not equal to 90");
    });
    

    配列。findlastと配列。findlastIndex


    さあアレイを試します.FindDlastメソッドは、1から10までの数の配列を作成します.そして、3の最後の倍数を探します.結果として、9を得る必要があります
    test("Array.findLast", () => {
         constant numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
         const lastmultipleofthree = numbers.findlast((n) => n % 3 === 0);
         assert.equal(lastMultipleOfThree, 9);
    });
    
    findlastメソッドは、シンタックスでフィルタに似ていますが、見つかった最後の要素を返します.
    次に、配列の操作が表示されます.findLastIndexメソッドは、繰り返し数を持つ配列を持ち、3に等しい要素の最後のインデックスを探します.この場合、配列に従って9になります.
    test("Array.findLastIndex", () => {
       const numbers = [1, 3, 2, 4, 4, 3, 4, 1, 9, 3];
       const lastIndexOfThree = numbers.findLastIndex((n) => n === 3);
       assert.equal(lastIndexOfThree, 9);
    });
    
    これはfindindexに似ていますが、条件に基づいて要素の最後に見つかったインデックスを返します.

    フェッチ


    今、私たちはフェッチしている私のお気に入りの機能のいずれかを試してみるつもりです.
    JSONPlaceholder API終点https://jsonplaceholder.typicode.com/users/1に電話しましょう
    test("Fetch", async() => {
       const reponse = await fetch("https://jsonplaceholder.typicode.com/users/1");
       const json = await response.json();
       assert.equal(json.name, "Leanne Graham");
    });
    
    我々が見ることができるように、我々はちょうど我々がブラウザからそうするようにフェッチ機能を持っています.
    私は個人的にこれを愛しており、それが安定するのを待つことができません.

    サブテスト


    最後に、サブテストを行います.
    test("top level test", async (t) => {
       await t.test("subtest 1", (t) => {
         assert.strictEqual(1, 1);
       });
    
       await t.test("subtest 2", (t) => {
         assert.strictEqual(2, 2);
       });
    });
    
    この例は公式のNodeJSドキュメントによって提供されます.ご覧のように、コールバックが与えるパラメータを通してチェインテストを行うのはとても簡単です.
    だから、これをクリアすると、新しいノードを試すことができます.個人的には、テストとノードAPIを組み込むのが本当に好きでした.
    確かに超便利である配列の新しいメソッドについては、私たちは失敗することはできません.

    If you want to know more about this update you can see it from the official blog here