Node.js テストの概要

Jul 25, 2016 am 08:43 AM

この記事は、単体テスト、統合テスト、ベンチマーク テスト、コード カバレッジ テストなどの側面を含む、Node.js テストに関する最近の学習をまとめたものです。中規模および大規模プロジェクトの場合、完全なテスト ケースは、プロジェクトの継続的統合機能とコードの堅牢性を確保するのに役立ちます。
単体テスト
単体テストはモジュールテストとも呼ばれ、プログラム内の最小の実行単位の正確性をテストします。一般的な開発モデルには、TDD と BDD があります。
TDD(テスト駆動開発、テスト駆動開発)では、まずテストケースを書き、そのテストケースに沿ってモジュールを開発し、テストケースが足りない場合はテストケースを追加します。テストでは、テスト ケースが完全に合格するまでモジュール コードの更新を続けます。開発の中核はテスト ケースを中心に展開されます。つまり、テスト ケースの完全性が開発モジュールの堅牢性と正確性を決定します。これにより、境界条件により単体テストのカバレッジが不十分になる可能性があります。 H BDD (Behavior-Driven Development、動作ドライバー開発) は、ビジネス ニーズに近いセマンティック プログラミング言語の開発テスト ケースを作成し、関連モジュールの開発を推進します。
AVA は JavaScript エコシステムの最新のテスト フレームワークであり、Babel が組み込まれており、軽量で効率的、同時実行、強制分離などの利点があります。
npm install --save-dev ava


package.json に scripts フィールドを設定します:

{ 「スクリプト」: {
"テスト": "ava",
"test:watch": "ava --watch" } }






ランニング:

npmテスト

#または npm テスト:watch




基本的なテストコードは次のとおりです:

「ava」からテストをインポート;
const フィボナッチ = (n) => {
; If (n === 0 || n === 1) { return n; }
フィボナッチ(n - 1) + フィボナッチ(n - 2)を返します;
}

test('テストフィボナッチ(0)', t => {
t.is(フィボナッチ(0), 0);
});

test('テストフィボナッチ(1)', t => {
t.is(フィボナッチ(1), 1);
});


//フックコール

test.before('Before', t => {
console.log('前');
});
test.after('後', t => { console.log('after');
});

test.beforeEach('BeforeEach', t => {
console.log(' beforeEach');
});

test.afterEach('AfterEach', t => {
console.log(' afterEach');
});




上記のコードでは、最初に AVA モジュールを導入し、次にテスト対象のフィボナッチ関数を作成しました。次に 2 つのテスト ケースが続き、最後に 4 つのフック メソッド: before() / after() / beforeEach() / afterEach() 。
AVA は、テストの実行方法を指定するためのいくつかの変更メソッドを提供します。

1. Skip() を追加してテスト ケースをスキップします。
2. Only() を追加してテスト ケースのみを実行します。
3.将来追加する必要があるテスト ケースを示します。
4. Serial() は、デフォルトでテスト ケースを並列実行します。

test('テストフィボナッチ(0)', t => {
t.is(フィボナッチ(0), 0);
});

上記のコードのコールバック関数内の
T はアサーション実行オブジェクトと呼ばれ、次のメソッドが含まれています:

·t.end()、テストを終了します。test.cb()でのみ有効です。
·t.plan(count)、実行数を指定します
·t .pass ([message])、テストは合格
·t.fail([message])、テストは失敗
·t.ok(value, [message])、とアサートしますvalue の値は true Value
·t.notOK(value, [message])、value の値が false であることをアサートします Value
·t.true(value, [message] )、value の値が true であることをアサートします
t.false(value, [message])、value が false であることをアサートします
t.is(value, Expected, [message] ])、値をアサート === 期待される
·t.not(値, 期待される, [メッセージ]), 値をアサート !== 期待される
·t.same(値, 期待される, [メッセージ])、値と期待値の深さが等しいことをアサート
·t.notSame(value, Expected, [メッセージ])、値と期待値の深さが等しくないことをアサート
· t.throws(function | Promise, [error, [message] ])、関数が例外または Promisereject エラーをスローすることをアサートします
·t.notThrows(function | Promise, [message])、関数は例外をスローしたり、resolve
t.regex(contents, regex, [message]) を約束したりせず、内容が正規表現と一致することをアサートします
t.ifError(error, [message] )、エラーが false 値であることを主張します

統合テスト

結合テストは、マイクロモジュールを中心とした単体テストに対して、マクロ全体の視点から問題を発見するため、アセンブリテスト、結合テストとも呼ばれます。 Travis CI は、Github プロジェクトの更新を監視し、オープン ソース ソフトウェアの統合テストを容易にする、優れた継続的統合ツールです。 Travis CI を使用するには、プロジェクトのルート ディレクトリに .travis.yml 構成ファイルを作成する必要があります (Node.js を例にします):

言語:node_js ノードjs:
- 「6」
- 「5」

before_script:

スクリプト:
- npmテスト
- ノードベンチマーク/index.js

after_script:




デフォルトでは、Travis CI は依存関係を自動的にインストールし、npm test コマンドを実行します。その完全なライフサイクルには、次のものが含まれます。

·
適切なアドオンをインストールする
·
before_install
·
install
·
before_script
·
script
·
after_success または after_failure
·
オプションのbefore_deploy
·
オプションのdeploy
·
オプションのafter_deploy
·
after_スクリプト

ベンチマークテスト ベンチマークテストは、厳密なテスト方法、テストツール、またはテストシステムを使用して、ターゲットモジュールのパフォーマンスを評価し、ソフトウェアおよびハードウェア環境の変更後のパフォーマンスを観察するためによく使用されます。そしてその結果、再現性のあるセックスが得られます。 Node.js 環境で最も一般的に使用されるベンチマーク ツールは Benchmark.js で、インストール方法は次のとおりです:

npm install --save-dev ベンチマーク

基本的な例:

const ベンチマーク = require('benchmark'); const suite = 新しい Benchmark.Suite;
suite.add('RegExp#test', function() {
/o/.test('Hello World!');
})
.add('String#indexOf', function() {
'Hello World!'.indexOf('o') > -1;
})
.on('サイクル', 関数(イベント) {
console.log(String(event.target));
})
.on('complete', function() {
console.log('最速は ' + this.filter('最速').map('name'));
})

// 非同期で実行します

.run({ 'async': true });


コードカバレッジ コードカバレッジツールは、コードの行数とテストケースでカバーされる分岐の数に基づいてモジュールの完全性を判断します。 AVA は、nyc を使用してコード カバレッジをテストし、nyc をインストールすることをお勧めします:

npm install nyc --save-dev

関連ファイルを無視するように .gitignore を変更します:

node_modules 取材 .nyc_output



package.json のテスト フィールドを変更します:

{ 「スクリプト」: { "テスト": "ニューヨークアヴァ"
}
}



npm テストを実行して次を取得します:

➜ アクション中のテスト (マスター) ✔ npm テスト > テストインアクション@1.0.0 テスト /Users/sean/Desktop/テストインアクション
>ニューヨークアヴァ

2名合格
----------|----------|----------|----------|------ ----|----------------|
ファイル | % ステートメント | % 関数 | カバーされていない行 |
----------|----------|----------|----------|------ ----|----------------|
----------|----------|----------|----------|------ ----|----------------|
すべてのファイル | 100 | 100 | ----------|----------|----------|----------|------ ----|----------------|




添付ファイルやテキストのアップロードに制限があるため、一部の写真やテキストが表示されない場合があります。詳しくは、http://mp.weixin.qq.com/s?をご覧ください。 __biz=MzI5ODI3NzY2MA== &mid=100000510&idx=2&sn=8339d4fca5f54ab3a9ec305eae756436#rd
みなさんのコミュニケーションを歓迎します。
下のQRコードをスキャンして、素敵な記事をどんどん入手してください! (QR コードをスキャンして、予想外のサプライズをご確認ください!!)
Node.js テストの概要
WeChat サブスクリプション アカウント (uniguytech100) とサービス アカウント (uniguytech) をフォローして、より多くの美しい記事を入手してください。
[Everyone Technology Network Discussion QQ Group] (グループ番号: 256175955) への参加も大歓迎です。自己紹介をメモしてください。一緒にそれについて話しましょう!




このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? Apr 17, 2025 am 12:06 AM

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか? スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか? Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHP対Python:違いを理解します PHP対Python:違いを理解します Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

See all articles