Skip to Content
効率的なNode.js
book

効率的なNode.js

by Samer Buna
March 2025
Intermediate to advanced
240 pages
3h 24m
Japanese
O'Reilly Media, Inc.
Content preview from 効率的なNode.js

第8章 ノードのテスト ノードをテストする

この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com

、現実世界でのテストとは一般的に、何かの悪いところを発見することである。コードに関して言えば、テストとは何が正しいかを発見することである。テストは、何かが機能していることを保証するものだ。

テストされていないコードは単純に危険だ。効率的でスケーラブルなコードは、十分にテストされている。テストとは、コードがやるべきことをやっていることを確認するだけでなく、コードやその環境、使用パターンが変わった後も、コードがやるべきことをやり続けていることを確認することでもある。テストとは、高品質のコードを書くことであり、潜在的な問題をできるだけ早期に発見することである。

コードの定期的なテストは、コードを健全に保ち、保守を容易にする。また、変更を加える際の保守者の自信も増す。テストされていないコードに変更を加えることは、災いのもとだ。モジュールXの新機能がモジュールYの他の機能を壊すかもしれない。変更のたびにすべてのコードを手作業でテストすることはできない。それを回避する方法はない。コードをテストするためにコードを書かなければならないが、テストコードにも問題があるかもしれない。テストは偽陰性や偽陽性を引き起こすかもしれない。だからこそ、テストを正しく行うことが非常に重要なのだ。それがこの章のすべてだ。

アサーションとランナー

Node の テストは、アサーションのセットである。テストを実行するには、テストランナーが必要だ。Nodeには両方のモジュールが組み込まれている。以下は、配列に対するmap メソッドの簡単なテストである:

import test from 'node:test';
import assert from 'node:assert/strict';

test('doubles items for a 2*e transformer', () => {
  // Arrange
  const inputArray = [1, 2, 3, 10];
  const expectedResult = [2, 4, 6, 20];

  // Act
  const actualResult = inputArray.map((e) => 2 * e);

  // Assert
  assert.deepEqual(actualResult, expectedResult);
});

Arrange-Act-Assertのパターンでテストを考えるとよい:

手配する

このセクションはセットアップである。ここでは、テストの環境と前提条件を準備する。

行為

このセクションでは、テストしたいメソッドを実行する。

アサート

このセクションは、我々の期待を確認する場所である。

このテストを実行するには、Nodeスクリプトに記述し、nodeコマンドで実行するだけだ。

図8-1に出力を示す。

node:test モジュール には、テストを整理したりラベルを付けたりするのに使えるオブジェクトがいくつかある。この例ではtest メソッドを使って、テストにdoubles items for a 2*e transformer という名前を付けた。node コマンドがこのメソッドを見ると、組み込みのランナーはその中のアサーションを実行して、このような出力を出す。この出力には、すべてのテスト名と、それが成功したか失敗したかが、それぞれのテスト時間とすべてのテストについての診断サマリーとともにリストされている。この例からわかるように、我々が行った1つのテストはOKだった。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Javaクックブック第5版

Javaクックブック第5版

Ian F. Darwin
ユーザーストーリーマッピング

ユーザーストーリーマッピング

Jeff Patton, 川口 恭伸, 長尾 高弘

Publisher Resources

ISBN: 9798341634183Supplemental Content