公式文書アドレス
最初の公式文書アドレスを添付し、https://jestjs.io/docs/zh-Hans/getting-started.html
簡単な紹介
冗談はフェイスブックのJavascriptのユニットテストツールに専用されている、もちろん、これらのアプリケーションは、アプリケーションが反応含まれています。その利点の一つが反応のネイティブサポートですが、また、他のフレームワークをサポートするのは非常に簡単。
インストール
NPM私冗談-D(ローカルインストール)
NPM I冗談-g(グローバルに)
基本構成の解釈
- package.json
package.json追加設定項目"冗談"で:{} CI
// package.json for example
...
"jest": {
"transform": {
".(ts|tsx)": "ts-jest"
},
"testEnvironment": "node",
"testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
"moduleFileExtensions": [
"ts",
"tsx",
"js"
],
"coveragePathIgnorePatterns": [
"/node_modules/",
"/test/"
],
"coverageThreshold": {
"global": {
"branches": 90,
"functions": 95,
"lines": 95,
"statements": 95
}
},
"collectCoverageFrom": [
"src/*.{js,ts}"
]
},
...
次に、我々は、単にこれらの構成項目の役割について話します
- 変換
簡単に言えば、それは変換の設定は、ここに書いてあり、
"transform": {
".(ts|tsx)": "ts-jest"
},
TS-冗談はツールによって表される。Tsはと。TSXは、我々は基本的にtsはまた、テストコードを書くために使用されているので、あなたがコンバータを構成したいので、JSにファイルの内容を変換します
- 試験環境
テスト環境
"testEnvironment": "node",
それはクラスブラウザのテスト環境であることを、我々は、いくつかのAPIをブラウザ環境を使用することができます
- testRegex
ファイルの正規表現をテストするには
"testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
ディレクトリは、すべてのテストを表します。Test.tsと。Spec.tsファイルは、テストを実行するために必要とされます
- moduleFileExtensions
あなたはモジュールを導入するために行くモジュールファイル名の拡張子は、時間の拡大の名前を指定していない、それが今度はモジュールファイルの提案導入にこれらの拡張機能を追加しようとします
"moduleFileExtensions": [
"ts",
"tsx",
"js"
],
それは見つけるための優先順位を表している。TSのモジュールが続く。TSXと。JS
- coverageThreshold
テストカバレッジしきい値設定、テストカバレッジ、我々が閾値に達し、テストは失敗します
"coverageThreshold": {
"global": {
"branches": 90,
"functions": 95,
"lines": 95,
"statements": 95
}
},
支店コードが90%以上のグローバルカバレッジを表す、方法の95%カバレッジは、コードカバレッジのラインの数が95%に達し、95%の宣言文
- collectCoverageFrom
指定されたファイルのテストカバレッジを収集する(これらのファイルのテストを書いていない場合でも、それはglobパターンタイプです)
"collectCoverageFrom": [
"src/*.{js,ts}"
]
これは、収集意味のsrcディレクトリとディレクトリ内のすべてのグループのjsとTSテストカバレッジファイルを
- setupFileAfterEnv
インストールのテストフレームワークは、リストを実行するには、直後のコードファイル
"setupFileAfterEnv": [
"<rootDir>/test/boot.ts"
]
彼は、彼らがすべての特定のテストコードを実行する前に実行されていると述べました
他の構成は、あなたは、公式ドキュメントを見ることができます
- jest.config.js
そして} {新しいjest.config.jsのCIのCIのmodule.exportsは=を追加
ラン
- NPX冗談(ローカル前提に添付)
- 冗談「冗談」を使用NPMラン試験後の「テスト」のレビュー「スクリプト」(前提は、グローバルに取り付けられています)
基本的な構文
- パケット(テストグループ):descripe(ディスクリプタ、機能)
- テスト(テストケース):テスト(記述言語、機能)
- (アサート)アサート期待(試験される操作の方法と実際の結果を返す).toBe(期待される結果)
// for example
Pencil.query =(name, url)=> { //方法,返回捕获
// ?hello=test&wonghan=handsome
var reg = new RegExp('(?:\\?|&)' + name + '=(.*?)(?:&|$)')
var ret = reg.exec(url) || []
return ret[1]
}
test('query',()=>{ // testCase
// 断言
expect(Pencil.query('hello', '?hello=test')).toBe('test')
expect(Pencil.query('hello', '?hello2=test')).toBe(undefined)
//可以写多个`ecpect()`
})
test('query2',()=>{
expect(Pencil.query('hello/test', '?hello/test=test')).toBe('test')
})
//可以写多个`test()`
describe('test query',()=>{
test('query3',()=>{ // testCase
// assert
expect(Pencil.query('hello', '?hello=test')).toBe('test')
expect(Pencil.query('hello', '?hello2=test')).toBe(undefined)
})
})
それマッチャー
上記のようなマッチャ一般的に知られているアサーション・ライブラリは、()戸部()期待して次のように他の一般的な使用法があり、そのうちの一つであります:
1.同じアサーション
被(値):比較、数値、文字列
toEqual(値):比較、配列
toBeNull()
toBeUndefined()
2.アサーションを含めます
toHaveProperty(キーパス、値):対応するプロパティあり
toContain(アイテム):括弧は、配列、文字列書き込み対応する値含ま
toMatch(regexpOrStringを):定期的なブラケットを書きます
3.論理アサーション
toBeTruthy()
toBeFalsy()
はfalse、0、 ''、:JavaScriptで、falsy 6つの値はnull、未定義、 およびNaNを。他のすべてがTruthyです。
toBeGreaterThan(数):より大きい
toBeLessThan(数):未満
4.not
否定、用途以下の例を参照してください
// for example
test('matchers',()=>{
const a = {
hello: 'jest',
hi :{
name: 'jest'
}
}
const b = {
hello: 'jest',
hi:{
name: 'jest'
}
}
// 以下结果均为true
expect(a).toEqual(b)
expect([1,2,3]).toEqual([1,2,3])
expect(null).toBeNull()
expect([1,2,3]).toContain(1)
expect(b).toHaveProperty('hi')
expect('123').toContain('2')
expect('123').toMatch(/^\d+$/)
expect('123').not.toContain('4')
})
一般的なステップピット
1.予期しないトークンのインポート
冗談のデフォルトは、あなたが、このような輸出入をサポートするので、システムのNode.jsのライトを使用してコード互換性の構文のいずれか(つまり、使用が必要)、またはここで使用されていないとして、サポートを使用しているJS特性Node.jsのバージョンをサポートしていますバベルはそれを逃れます。
ソリューション
冗談ではバベルでの使用だけの行にしたいコンフィギュレーションに参加バベル - 冗談をインストールして、新しい.babelrcを作成し、非常に簡単です、冗談は自動的バベル-冗談を使用します。ここでは、単に対応する.babelrcにバベル-プリセット-ENVを使用しています:
{
"presets": ["env"]
}
ほとんどの時間は、プロジェクト自体は、使用.babelrcにすでにあるので、このステップは省略しても。