検索

この記事は、単体テスト、統合テスト、ベンチマーク テスト、コード カバレッジ テストなどの側面を含む、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 までご連絡ください。
PHPの現在のステータス:Web開発動向を見てくださいPHPの現在のステータス:Web開発動向を見てくださいApr 13, 2025 am 12:20 AM

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHP対その他の言語:比較PHP対その他の言語:比較Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHP対Python:コア機能と機能PHP対Python:コア機能と機能Apr 13, 2025 am 12:16 AM

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

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 13, 2025 am 12:07 AM

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

誇大広告を超えて:今日のPHPの役割の評価誇大広告を超えて:今日のPHPの役割の評価Apr 12, 2025 am 12:17 AM

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPの弱い参照は何ですか、そしていつ有用ですか?PHPの弱い参照は何ですか、そしていつ有用ですか?Apr 12, 2025 am 12:13 AM

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

PHPで__invoke Magicメソッドを説明してください。PHPで__invoke Magicメソッドを説明してください。Apr 12, 2025 am 12:07 AM

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 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ヘンタイを無料で生成します。

ホットツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

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

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Mac版

SublimeText3 Mac版

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