学習ノート[]冗談ユニットテストツール

公式文書アドレス

最初の公式文書アドレスを添付し、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ディレクトリとディレクトリ内のすべてのグループのjsTSテストカバレッジファイルを

  • setupFileAfterEnv

インストールのテストフレームワークは、リストを実行するには、直後のコードファイル

    "setupFileAfterEnv": [
        "<rootDir>/test/boot.ts"
    ]

彼は、彼らがすべての特定のテストコードを実行する前に実行されていると述べました /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にすでにあるので、このステップは省略しても。

おすすめ

転載: www.cnblogs.com/fe-linjin/p/11519606.html