気がついたこと
- プライベートメソッド(メソッド名の最後に「_」をつけたメソッド)でも試験が可能
テスト対象
こちらで作成した、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 自体の使い方として参考になりました。
以上です。