気がついたこと
- プライベートメソッド(メソッド名の最後に「_」をつけたメソッド)でも試験が可能
テスト対象
こちらで作成した、getOtherRandomInt 関数をユニットテストしたいと存じます。
今回、その流れとテストコードをノートしますわ♪
QUnit for Google Apps Script を取り込む
- テストしたいスクリプトのプロジェクトを開く
- リソース > ライブラリ
- 「MxL38OxqIK-B73jyDTvCe-OBao7QLBR4j」をライブラリを検索に入力し、「選択」
- タイトルが「Qunit」のライブラリが表示される。バージョンは最も高いもの (2015年9月29日現在、3)、識別子は「Qunit」のまま、デベロッパーモードは「無効」のまま。
- 「保存」
QUnit テストを書く
- ファイル > 新規作成 > スクリプト ファイル
- テスト.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 ← 導入ボタンクリック後、自動で入った
- 次の
- アプリケーションを: 自分だけ
- 承認が必要です、に、「続行」。許可のリクエストに、「許可」
- 「ウェブアプリケーションとして導入」のダイアログで、「最新のコード」のリンクをクリック

- 別タブでテスト結果が表示される。内容を確認する。
最初のテストの実施は、テストコード全部ではなく、テスト 1 つを書いたタイミングで行いました。
2 回目以降は、「導入」クリックが必要なく、以下の手順で手間なく実施できました。
- 公開 > ウェブアプリケーションとして導入
- ウェブアプリケーションとして導入ダイアログの、「現在のウェブ アプリケーションの URL:」の URL の下にある「最新のコード」リンクをクリック
おわりに
次のページが参考になりました。ありがとう存じます!
- GoogleAppsScriptでユニットテスト – Qiita
実践をポイントに絞って紹介されております。 - qunit/gas at gas · simula-innovation/qunit · GitHub
QUnit for Google Apps Script の本家ページですの。 - QUnit
QUnit 本家ページですの。 - javascriptのテストのはなし:QUnit | Developers.IO
QUnit 自体の使い方として参考になりました。
以上です。

