0Pricing
Node.js Backend Development Bootcamp · レッスン

Jestによるユニットテスト

Jestテストフレームワークを使い、個々の関数やモジュールを分離してテストするユニットテストの書き方を学びます。

「Jestによるユニットテスト」はCoddyKit上の無料Node.js Backend Development Bootcampレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはNode.js Backend Development Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Node.js Backend Development Bootcampコースには全4レッスンが含まれています。

このレッスンの一部はまだ翻訳されておらず、英語で表示されています。

What is Unit Testing?

Welcome to unit testing! This is a fundamental practice in software development where individual components or functions of your application are tested in isolation.

Think of it like checking each gear in a clock separately to ensure it works perfectly before assembling the whole mechanism. This helps catch bugs early!

Meet Jest: Your Testing Buddy

For Node.js, Jest is one of the most popular and developer-friendly testing frameworks. It's developed by Facebook and offers a complete, integrated solution for JavaScript testing.

  • Zero Config: Often works out of the box.
  • Fast: Designed for performance.
  • Rich API: Powerful assertion library (matchers) included.
  • Snapshot Testing: Great for UI components.

Installing Jest

Getting started with Jest is easy. You'll install it as a development dependency in your Node.js project. Open your terminal in your project's root directory and run:

npm install --save-dev jest

After installation, you can add a script to your package.json file to easily run your tests:

"scripts": { "test": "jest" }

Our First Function to Test

Let's write a simple function that we want to test. This function will add two numbers. We'll put it in a file named sum.js.

You can run this file directly to see the function in action, but later we'll use Jest to test it automatically!

function sum(a, b) {
  return a + b;
}

// This allows us to use 'sum' in other files
module.exports = sum;

// Optional: Run this part only if the file is executed directly
if (require.main === module) {
  console.log("Running sum(2, 3):");
  console.log("Result: ", sum(2, 3)); // Expected: 5
}

Structuring Your Test File

Jest looks for test files with specific naming conventions, usually .test.js or .spec.js. Let's create sum.test.js in the same directory.

Inside, we use describe() to group related tests and test() (or it()) for individual test cases. This makes your tests organized and readable.

Making Assertions with Matchers

Inside a test() block, we use expect() combined with a "matcher" to assert that a value meets certain conditions. For example, .toBe() checks for exact equality.

Here's how we'd test our sum function:

const sum = require('./sum');

describe('sum function', () => {
  test('adds 1 + 2 to equal 3', () => {
    expect(sum(1, 2)).toBe(3);
  });

  test('adds 0 + 0 to equal 0', () => {
    expect(sum(0, 0)).toBe(0);
  });

  test('adds negative numbers correctly', () => {
    expect(sum(-1, -2)).toBe(-3);
  });
});

Running Your Tests

Now that you have your sum.js and sum.test.js files, and Jest installed with the script configured, you can run your tests!

Simply type npm test in your terminal. Jest will find your .test.js files, execute them, and report the results. You'll see green if all tests pass!

Handling Async Tests

Many Node.js applications deal with asynchronous operations (like fetching data, database calls). Jest handles these beautifully!

You can use async/await directly in your test functions. Jest will wait for the promise to resolve before completing the test.

function fetchData() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve("Data from API");
    }, 50);
  });
}

module.exports = fetchData;

// Optional: Run this part only if the file is executed directly
if (require.main === module) {
  console.log("Simulating data fetch...");
  fetchData().then(data => console.log("Received: ", data));
}

Writing Async Tests

To test our fetchData function, we'll mark our test function as async. Jest also provides special matchers like .resolves and .rejects for promises.

Using await within your test makes asynchronous code look synchronous, improving readability.

const fetchData = require('./fetchData');

describe('fetchData function', () => {
  test('should return "Data from API"', async () => {
    const data = await fetchData();
    expect(data).toBe('Data from API');
  });

  test('should resolve with specific data', () => {
    return expect(fetchData()).resolves.toBe('Data from API');
  });
});

Jest Matcher Check

Which of the following Jest matchers would you use to check if two objects have the same value (deep comparison), not just if they are the same instance?

Unit Testing with Jest: Recap

Great job! You've learned the basics of unit testing with Jest. We covered:

  • What unit testing is and its benefits.
  • How to install and set up Jest.
  • Structuring tests with describe and test.
  • Making assertions using expect and matchers like .toBe() and .toEqual().
  • Handling asynchronous code with async/await.

Keep practicing and happy testing!

よくある質問

「Jestによるユニットテスト」レッスンは無料ですか?

はい。「Jestによるユニットテスト」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Node.js Backend Development Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Node.js Backend Development Bootcampコースには全4レッスンが含まれています。

「Jestによるユニットテスト」で何を学びますか?

Jestテストフレームワークを使い、個々の関数やモジュールを分離してテストするユニットテストの書き方を学びます。 ブラウザで直接実行するハンズオンコードでNode.js Backend Development Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Node.js Backend Development Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのNode.js Backend Development Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Jestによるユニットテスト」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このNode.js Backend Development Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのNode.js Backend Development Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Jestによるユニットテスト
  2. APIエンドポイントの結合テスト
  3. 効果的なデバッグ手法
  4. Node.jsのモックとテストダブル
← Node.js Backend Development Bootcampに戻る