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

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

Oct 18, 2018 pm 02:51 PM
javascript node.js react.js vue.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 までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

JavaScriptでinsertBeforeを使用する方法 JavaScriptでinsertBeforeを使用する方法 Nov 24, 2023 am 11:56 AM

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

See all articles