ユニットテスト
GASでもテストコード書きたいよね、ということでこんなん作ってみました。
まずは、unittest.gs というファイルを作成して、以下のコードをコピペ。
function test() { try { // 先頭が「__test」から始まるメソッドを探して実行 var keys = Object.keys(this); for(var i=0; i<keys.length; ++i) { var funcName = keys[i]; if( funcName.indexOf("__test") == 0 ) { Logger.log("TEST START %s", funcName); this[funcName].call(this); } } } catch(e) { Logger.log(e); Logger.log(e.stack); } } var Assert = { equal: function(expected, actual) { if( expected !== actual ) throw new Error(expected + "!==" + actual); }, isNull: function(expected) { if( expected !== null ) throw new Error(expected + " is not null"); } }
んで、それぞれのgsファイルの最後にテストコードを書いておけば、test() を実行すると、それらのテストコードが全部実行されますよ、と
main.gs
function add(x, y) { return x-y; } function __test_add() { Assert.equal(5, add(2,3)); }