アサーションをテストユニット
フロントエンドの開発など、めったに自分のユニットテストを書くません。自分の個人的な理解のいくつかとまれユニットテスト、ユニットテストアサーションについて少し自己知識、理解、次回の使用に便利なアクセスを記録しました。
何アサートされています
あなたが入力すると、モジュールが受け入れることができるか、プロセス入力と出力が非常に明確な定義と理解している出力と入力プログラムが一致しない場合、
あなたはプログラムが明確なリターンを持っていると思います。例えば:私は正確に知っている1+1=2
、私は私が入るように知っていた1+1
2を取得します。そうでない場合、プログラムはエラーを返します。この時点で、我々は正常にするために使用する主張します。
断言
所望の出力と一貫性のあるツールことを確認するために設計されています。実際の値と比較することによって得られるコンテンツの実現においてactual
、所望の値expected
を達成するために。ここではより広く使用さアサーションライブラリですchai.js
chai.jsアサーションライブラリ
- インストールとインポート
npm i chai
import chai from 'chai'
let expect = chai.expect;
- 使用
let foo = 'bar';
expect(foo).to.equal('bar');
チャイの使用は、連鎖呼び出しの形に似ています。ではexpect(foo).to.be.a('string');
、例えば、
を通じて.
私あなたが置くことができるか、このチェーンは、いくつかの部分に分かれています。
expect(foo)
to
be
a('string')
私たちは、徐々にこれらの部品を理解するようになった:
expect(foo)
:に変換され、あなたがオブジェクトと主張するために、私はそうとそう望む
to
機能語を、単にチェーンとしてアサーション言語の可読性を改善するためのビューを提供し、それが機能していない自分自身を主張しています。
be
:同じto
読みやすさを改善するための言語の呼び出しチェーンなど。
a(string)
:a(type)
試験紙の種類を決定するための述語です。タイプは、アサーションの期待されたテスト値のタイプです。
したがって、上記の分析に基づいて、我々はこれらの部品を主張する必要性の実現を見ることができます:
- の対象と主張するために、
- それは言葉アサーションアサーション機能を持っていません
- アサーションアサーション・ワードと
- 所望の結果は、
所望のオブジェクトをアサートし、その結果を入出力するための実際の必要性に基づいて設定されます。したがって、私たちは主に、アサーション・ワードを説明します。
それは言葉アサーションアサーション機能を持っていません
- に
- されます
- き
- あります
- それ
- これ
- そして
- 持っています
- 持ってる
- とともに
- に
- の
- 同じ
- しかし
- し
- まだ
これらのアサーション・ワード、実際には意味がありません、あなたはそれを取り除くには影響を受けません。例えば:
expect(foo).to.equal('bar');
expect(foo).equal('bar');
上記の二つの主張は、同じ機能を実現することができます。それは、これらの言葉の使用はほとんど影響を及ぼさないことはありません。
そして、アサーションアサーション機能について言うべき言葉を持っています。
アサーションアサーション・ワードと
equal
equal
アサーションの大半が使用するために変換することができ、基本的にユニバーサルアサーションの言葉でequal
達成します。
変数のような3の長さは、我々が使用できるかどうかを決定するlengthOf
、また使用することができますequal
達成するために
expect(foo).have.lengthOf(3);
expect(foo.length).equal(3);
例えば、データの種類を決定するために:私たちは使用することができますいずれかa
も使用することができますequal
達成するために
expect(foo).to.be.a('string');
expect(typeof foo).to.equal('string');
.deep
deep
主に再帰キーと値のペアの比較ではなく、オブジェクト自体の比較を使用します。通常とequal
してproperty
使用。
例えば:
expect([1,2]).equal([1,2]) // 断言不通过
上記アサーションができない、それは、複数の基準の型がオブジェクトです。次はの使用を見てdeep
expect([1,2]).deep.equal([1,2]) // 断言通过
オブジェクトの配列、等場合、参照タイプが、要求される値を比較する場合には、ですdeep
。
使用するとequal
とdeep
、私たちは基本的にアサーションのほとんどを達成することができます。アサーションの詳細は、
を参照することができます公式サイト
説明
現在のみについて説明しexpect
、実際には、使用をchai.js
そこにassert
し、should
アサーションの方法の種類。
これはexpect
主にテストドライブの振る舞い(ビヘイビアDevelopment.BDDを駆動)に適用されます。その後、プレゼンテーションで使用されるアサーションの方法で、他の種類の。