検索
ホームページウェブフロントエンドjsチュートリアルジェストとは何ですか? Jestの基本的な使い方

ジェストとは何ですか? Jestの基本的な使い方

Oct 18, 2018 pm 02:51 PM
javascriptnode.jsreact.jsvue.js

この記事の内容は、Jest とは何ですか? Jest 関連の知識の紹介は、必要な友人に参考にしていただけると幸いです。

1 Jest とは何ですか?

Jest

Jest は、アサーション、JSDom、これは、開発者が必要とするカバレッジ レポートやその他のテスト ツールを備えた、ほぼ構成が不要なテスト フレームワークです。また、Facebook のオープンソース フロントエンド フレームワークである React のテストにも非常に適しています。

2 Jest のインストール

2.1 package.json の初期化

シェルに次のコマンドを入力して、フロントエンド プロジェクトを初期化し、パッケージを生成します。 json:

npm init -y

2.2 Jest と関連する依存関係をインストールする

シェルに次のコマンドを入力して、テストに必要な依存関係をインストールします:

npm install -D jest babel-jest babel-core babel-preset-env regenerator-runtime

babel-jest、babel-core 、regenerator-runtime、babel-preset-env のこれらの依存関係は、ES6 の構文機能を単体テストに使用できるようにするためのものです。モジュールをインポートするために ES6 によって提供されるインポート メソッドは、Jest 自体ではサポートされていません。

2.3 .babelrc ファイルを追加します

プロジェクトのルート ディレクトリに .babelrc ファイルを追加し、ファイル内の次の内容をコピーします。

{ 
 "presets": ["env"]
}

2.4 package.json スクリプトでのテスト

package.json ファイルを開き、スクリプトの下の test の値を jest:

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

3 に変更します。最初の Jest テストを作成します。 ##src ディレクトリと test ディレクトリおよび関連ファイルを作成します

プロジェクトのルート ディレクトリに src ディレクトリを作成し、src ディレクトリに function.js ファイルを追加します

テストを作成しますプロジェクトのルート ディレクトリにディレクトリを作成し、テスト ディレクトリに function.test.js ファイルを作成します。

Jest は、プロジェクト内の .spec.js または .test.js ファイルを使用して名前が付けられたすべてのテスト ファイルを自動的に検索し、実行します。通常、テスト ファイルを作成します。従うべき命名規則は次のとおりです: テスト ファイルのファイル名 = テスト対象のモジュールの名前。たとえば、テスト対象のモジュールは function.js です。対応するテスト ファイルの名前は、functions.test.js です。

src/functions.js にテスト済みモジュールを作成します

export default {
  sum(a, b) {
      return a + b;
  }
}

test/functions.test.js ファイルにテスト ケースを作成します

import functions  from '../src/functions';
test('sum(2 + 2) 等于 4', () => {
  expect(functions.sum(2, 2)).toBe(4);
})

npm run test を実行します (Jest)次のメッセージがシェルに出力されます:

PASS  test/functions.test.js
  √ sum(2 + 2) 等于 4 (7ms)
Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        4.8s

4. よく使用されるいくつかの Jest アサーション

expect(functions.sum(2, 2)).toBe( 4) はアサーションです。Jest は、テストされたメソッドをラップしてオブジェクトを返すための関数を提供します。このオブジェクトには、アサーションを簡単に行うための一連のマッチャーが含まれています。複数のマッチャーが関与する、一般的に使用される Jest アサーションをいくつか紹介します。

.not

//functions.test.js
import functions  from '../src/functions'
test('sum(2, 2) 不等于 5', () => {
  expect(functions.sum(2, 2)).not.toBe(5);
})

.not 修飾子を使用すると、結果が特定の値と等しくない場合の状況をテストできます。これは英語の構文とほぼ同じであり、理解しやすいです。 。

.toEqual()

// functions.js
export default {
  getAuthor() {
      return {
            name: 'LITANGHUI',      
            age: 24,
    }
  }
}
// functions.test.js
import functions  from '../src/functions';
test('getAuthor()返回的对象深度相等', () => {
  expect(functions.getAuthor()).toEqual(functions.getAuthor());
})
test('getAuthor()返回的对象内存地址不同', () => {
  expect(functions.getAuthor()).not.toBe(functions.getAuthor());
})

.toEqual マッチャーはオブジェクトのすべての属性と属性値が等しいかどうかを再帰的にチェックしますので、アプリケーションの種類を比較したい場合は .toEqual を使用してください。 .toBe の代わりにマッチャーを使用します。

.toHaveLength

// functions.js
export default {
  getIntArray(num) {
      if (!Number.isInteger(num)) {
            throw Error('"getIntArray"只接受整数类型的参数');
    }
        let result = [];    
        for (let i = 0, len = num; i < len; i++) {
      result.push(i);
    }    
    return result;
  }
}
// functions.test.js
import functions  from &#39;../src/functions&#39;;
test(&#39;getIntArray(3)返回的数组长度应该为3&#39;, () => {
  expect(functions.getIntArray(3)).toHaveLength(3);
})

.toHaveLength は、文字列型と配列型の長さが期待どおりかどうかをテストするのに便利です。

.toThrow

// functions.test.js
import functions  from &#39;../src/functions&#39;;
test(&#39;getIntArray(3.3)应该抛出错误&#39;, () => {
  function getIntArrayWrapFn() {
    functions.getIntArray(3.3);
  }
  expect(getIntArrayWrapFn).toThrow(&#39;"getIntArray"只接受整数类型的参数&#39;);
})

.toThorw を使用すると、テスト対象のメソッドが期待どおりに例外をスローするかどうかをテストできますが、これを使用するときに注意する必要があるのは、次のような関数を使用する必要があるということです。上記の getIntArrayWrapFn と同様に、関数のラッパーを作成します。そうしないと、関数がスローされるため、アサーションは失敗します。

.toMatch

// functions.test.js
import functions  from &#39;../src/functions&#39;;
test(&#39;getAuthor().name应该包含"li"这个姓氏&#39;, () => {
  expect(functions.getAuthor().name).toMatch(/li/i);
})

.toMatch は正規表現を渡します。これにより、文字列型の正規一致を実行できます。

5 非同期関数のテスト

axios のインストール

ここでは、リクエスト処理に最も一般的に使用される http リクエスト ライブラリ axios を使用します

npm install axios

http を書き込みますリクエスト関数

http://jsonplaceholder.typicode.com/users/1,
これは、JSONPlaceholder によって提供される模擬リクエスト アドレスです

ジェストとは何ですか? Jestの基本的な使い方


JSONPlaceholder

// functions.js
import axios from &#39;axios&#39;;
export default {
  fetchUser() {
      return axios.get(&#39;http://jsonplaceholder.typicode.com/users/1&#39;)
      .then(res => res.data)
      .catch(error => console.log(error));
  }
}
// functions.test.js
import functions  from &#39;../src/functions&#39;;
test(&#39;fetchUser() 可以请求到一个含有name属性值为Leanne Graham的对象&#39;, () => {
  expect.assertions(1);  
  return functions.fetchUser()
    .then(data => {
      expect(data.name).toBe(&#39;Leanne Graham&#39;);
    });
})

上記では、expect.assertions(1) を呼び出しました。これにより、非同期テスト ケースでアサーションがコールバック関数で実行されることが保証されます。これは、非同期コードをテストする場合に非常に効果的です。

async と await を使用して非同期コードを合理化する

test(&#39;fetchUser() 可以请求到一个用户名字为Leanne Graham&#39;, async () => {
  expect.assertions(1);
    const data =  await functions.fetchUser();
  expect(data.name).toBe(&#39;Leanne Graham&#39;)
})

もちろん、Babel をインストールしたので、非同期テスト コードを合理化するために async と await の構文を使用しないのはなぜでしょうか。すべてexpect.assertionsメソッドを呼び出す必要があることを忘れてください。

以上がジェストとは何ですか? Jestの基本的な使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は简书で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Python vs. JavaScript:学習曲線と使いやすさPython vs. JavaScript:学習曲線と使いやすさApr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

Python vs. JavaScript:コミュニティ、ライブラリ、リソースPython vs. JavaScript:コミュニティ、ライブラリ、リソースApr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへ:すべてがどのように機能するかC/CからJavaScriptへ:すべてがどのように機能するかApr 14, 2025 am 12:05 AM

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

JavaScriptエンジン:実装の比較JavaScriptエンジン:実装の比較Apr 13, 2025 am 12:05 AM

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

ブラウザを超えて:現実世界のJavaScriptブラウザを超えて:現実世界のJavaScriptApr 12, 2025 am 12:06 AM

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)Apr 11, 2025 am 08:23 AM

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)Apr 11, 2025 am 08:22 AM

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScript:Web言語の汎用性の調査JavaScript:Web言語の汎用性の調査Apr 11, 2025 am 12:01 AM

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター