カテゴリー
Google

QUnit for Google Apps Script でユニットテストを行う手順

QUnit for Google Apps Script のテスト結果。すべて合格♪

気がついたこと

  • プライベートメソッド(メソッド名の最後に「_」をつけたメソッド)でも試験が可能

テスト対象

こちらで作成した、getOtherRandomInt 関数をユニットテストしたいと存じます。

今回、その流れとテストコードをノートしますわ♪

QUnit for Google Apps Script を取り込む

  1. テストしたいスクリプトのプロジェクトを開く
  2. リソース > ライブラリ
  3. 「MxL38OxqIK-B73jyDTvCe-OBao7QLBR4j」をライブラリを検索に入力し、「選択」
  4. タイトルが「Qunit」のライブラリが表示される。バージョンは最も高いもの (2015年9月29日現在、3)、識別子は「Qunit」のまま、デベロッパーモードは「無効」のまま。
  5. 「保存」

QUnit テストを書く

  1. ファイル > 新規作成 > スクリプト ファイル
  2. テスト.gs と名付けて「OK」

そして、テストコードは次のように書きました。

/**
 * QUnit テストです。
 */

QUnit.helpers( this );

function doGet( e ) {
  QUnit.urlParams( e.parameter );
  QUnit.config({
    title: "GAS のユニットテスト"
  });
  QUnit.load( myTests );
  return QUnit.getHtml();
};

function myTests() {
  module('getOtherRandomInt 関数テスト');

  test('正常系', function () {
    var numberArray = [1, 2, 3, 4, 5];
    var min = 1;
    var max = 6;
    strictEqual(getOtherRandomInt_(numberArray, min, max), 6,
                '右端。numberArray = [1, 2, 3, 4, 5]; min = 1; max = 6; の結果、 6'
               );

    var numberArray = [2, 3, 4, 5, 6];
    var min = 1;
    var max = 6;
    strictEqual(getOtherRandomInt_(numberArray, min, max), 1,
                '右端。numberArray = [2, 3, 4, 5, 6]; min = 1; max = 6; の結果、 1'
               );

    var numberArray = [-10, -5, 0, 3, 4, 5, 7, -8, 9, -2];
    var min = -10;
    var max = 10;
    var expect = [-9, -7, -6, -4, -3, -1, 1, 2, 6, 8, 10];
    ok(expect.indexOf(getOtherRandomInt_(numberArray, min, max)) > -1,
       'numberArray = [-10, -5, 0, 3, 4, 5, 7, -8, 9, -2]; min = -10; max = 10; の結果、[-9, -7, -6, -4, -3, -1, 1, 2, 6, 8, 10] のいずれか'
      );

    var numberArray = [];
    var min = 1;
    var max = 5;
    ok([1, 2, 3, 4, 5].indexOf(getOtherRandomInt_(numberArray, min, max)) > -1,
       'numberArray = []; min = 1; max = 5; の結果、1 〜 5 のいずれか'
      );

    var numberArray = [2, 3, 4, 5, 6];
    var min = 1;
    var max = 6;
    strictEqual(getOtherRandomInt_(numberArray, min, max), 1,
                '右端。numberArray = [2, 3, 4, 5, 6]; min = 1; max = 6; の結果、 1'
               );

    var numberArray = ['あ', 2, 'A', 3, 4, 5, 6];
    var min = 1;
    var max = 10;
    var expect = [1, 7, 8, 9, 10];
    ok(expect.indexOf(getOtherRandomInt_(numberArray, min, max)) > -1,
       'numberArray = [あ, 2, A, 3, 4, 5, 6]; min = 1; max = 10; の結果、[1, 7, 8, 9, 10] のいずれか'
      );
  });

  test('異常系', function () {
    var numberArray = [1, 2, 3, 4, 5];
    var min = 1;
    var max = 5;
    strictEqual(getOtherRandomInt_(numberArray, min, max), undefined,
                '乱整数を返却し尽くしたため、返却可能な乱整数がなく、結果 undefined'
               );

    var numberArray = [1, 2, 3, 4, 5];
    var min = 10;
    var max = -10;
    strictEqual(getOtherRandomInt_(numberArray, min, max), undefined,
                'min > max のため、結果 undefined'
               );

  });
}

ユニットテストを実施する

  1. 公開 > ウェブアプリケーションとして導入
  2. そのまま「導入」クリック。各項目は次の様になっていた。
    • プロジェクト バージョン: 1 ← 導入ボタンクリック後、自動で入った
    • 次の
    • アプリケーションを: 自分だけ
  3. 承認が必要です、に、「続行」。許可のリクエストに、「許可」
  4. 「ウェブアプリケーションとして導入」のダイアログで、「最新のコード」のリンクをクリック
    テストを実施するには、「最新のコード」をクリック
  5. 別タブでテスト結果が表示される。内容を確認する。

最初のテストの実施は、テストコード全部ではなく、テスト 1 つを書いたタイミングで行いました。

2 回目以降は、「導入」クリックが必要なく、以下の手順で手間なく実施できました。

  1. 公開 > ウェブアプリケーションとして導入
  2. ウェブアプリケーションとして導入ダイアログの、「現在のウェブ アプリケーションの URL:」の URL の下にある「最新のコード」リンクをクリック

おわりに

次のページが参考になりました。ありがとう存じます!

以上です。

コメントを残す