Node.js テストの概要

WBOY
WBOYオリジナル
2016-07-25 08:43:50894ブラウズ
この記事は、単体テスト、統合テスト、ベンチマーク テスト、コード カバレッジ テストなどの側面を含む、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 までご連絡ください。
前の記事:Laravel初体験次の記事:Laravel初体験