JavaScriptユニットテスト


ちょうど会社のプロジェクトの中に配置ユニットテストが必要です.機会を借りて勉強しました.最終的にFacebookのjestテストフレームを選択しました.ここでは以下の内容が含まれています.
  • ユニットテストは何ですか?
  • はいつユニットテストを使いますか?
  • ユニットテストはどうやって使いますか?
  • ユニットテスト(Unit Testing)は何ですか?
    ユニットとは?ソフトウェア設計の最小単位.プログラムをプロセス化する時、単一のプログラム、関数、プロセスなどでもいいです.オブジェクト指向プログラミングでは、ベースクラス、抽象クラス、サブクラスの方法などを含む方法とすることができます.ユニットテストとは、ソフトウェア設計の最小単位に対して正確性検査を行うテストです.ユニットテスト以外にも、統合テスト、システムテスト、検収テストなどのテストタイプがあります.これらの作用はプロジェクト開発の異なる段階で、テストの目的も違います.
    ユニットテストはいつ使いますか?
    ソフトウェア設計には二つの最終目標があります.
  • 需要を実現する.
  • コードの品質とメンテナンス性.
  • ですから、いつセルテストを使うかを判断するには、この二つの目標が達成されたかどうかを見ることです.例えば、次の2つのシーンを考える.
  • Hello Worldを出力して、何行のコードですか?
  • ある会社の管理システム、2 w+コード、千の関数と方法.
  • シーン1については、簡単さが必要で、コードの品質に関わらず、メンテナンス性においても、かなり高いです.このようなシーンは明らかにユニットテストを追加する必要がありません.シーン2に対して、このシステムを構成する上千の関数と方法はバグがないことを保証できますか?もしあなたが天賦を持っていても、このような複雑なコードを暴走させないようにすることができます. などの場面に遭遇した場合、変更は新たな問題を導入しないと保証できますか?(ちょっと工程経験のある人は全部バグを修正しながらバグを書く絶望を経験したはずです.)
    したがって、私たちの結論は、もしあなたのシーンの需要が簡単で、個人開発、コード量が少ないか、または一票の道を走るつもりであれば、単一測定はそんなに重要ではないかもしれません.しかし、システムの複雑さが最終的に個人の精力を超えてしまうと、潜在的なリスクを回避するためには、ユニットテストが必要です.ユニットのテストの意味を最も表すシーンは、コードを修正する時です.
    よく使われているJavaScript単一測定フレームと比較?
    とりあえずjustフレームだけ使ったので、追加します.
    一つのユニットを実践してテストします.
    シーン
    出会った一つのビジネスシーンは、複数のAPPでのリンクスティッチングルールが異なり、いくつかの関数規範を通じてスティッチングされた文字列に出力されます.スティッチング機能自体は面倒ではないので、各APPのリンク規則が違っていて、反復(例えばログパラメータを追加したり、サポートしたりするAPPを追加したり)などの機能を実現する時には、エラーが発生しやすいです.したがって、アクセスシート測定は効率を向上させます.
    プロジェクトはvue-cliで初期化され、上述の機能に簡単なウェブページを提供するためであり、UI部分は重点ではなく、一時的にシングルテストにはアクセスせず、純粋なjsの論理部分のみを単一テストにアクセスする.
    使用
    justはとても使いやすいです.文書も詳しくて、ここでは主にプロジェクトの応用手順を説明します.具体的なAPI呼び出しは直接公式文書Getting Startdを参照することができます.
  • jestをインストールします.公式文書ではyarnコマンドを使用することが多いですが、npmを使うことも可能です.
  • npm install --save-dev jest
    
  • .package.jsonを変更して、次のコマンド(–coverageがプリントカバー率などを示す情報)を追加します.
  • {
        "script": {
            "test": "jest --coverage"
        }
    }
    
  • プロジェクトのルートディレクトリの下でtestsフォルダ(srcディレクトリと同じレベル)を作成し、テストするファイルと同じパスのテストファイルを作成し、xxx.test.js
  • と命名しました.
  • 単量測定を追加する関数を導入する
  • 作成単量測定    - expectで導入した関数を呼び出し、マッチング器(数字、オブジェクト、文字列など様々な異なるマッチング器がある)で出力が予想通りかどうかを判断します.    - 境界状況、異常入力などを考慮したいくつかのテストケース
  • .
    test('two plus two is four', () => {
      expect(2 + 2).toBe(4);
    });
    
  • package.jsonファイルを修正し、pre-commitのフックでも実行します.このように他の人がこのプロジェクトを修正して提出しても、デフォルトで一回のシングル測定
  • を行います.
  • は、npm run testを介して手動で単一測定
  • を実行してもよい.
    FAQ
    1.コード仕様のチェックがありますが、test関数は全体的な方法です.未定義のエラーを報告しますか?         答え:test関数をグローバル変数としてマークすればいいです.         2.上記で純jsのテストプランを説明しましたが、単一ファイルコンポーネント(UI、ライフサイクルなどを含む)はどうやってテストしますか?         答:本質的には同じ考えです.指定された入力の下で出力が予想通りになるかどうかを見ます.UIテスト用の例の作成は面倒かもしれません.インターネットで多くの資料を見つけることができます.ここでは詳しく説明しません.
    参考文献
    ウィキペディア-ユニットテスト
    ユニットテストは一体何ですか?どうすればいいですか?coolhappyの答え-承知しました.
    ジェースト文書
    本文は同時に私の個人ブログで発表します.JavaScriptユニットテストです.