あんパン

こしあん派

FirefoxOSでテストっぽいことをするなにかを作った

masawada/smoothy

できました。

f:id:masawada:20130629163434p:plain

前の記事でStreamingAPIからとってきたresponseTextをconsole.logに出力しつつActivityMonitorをみていたらメモリ使用量が10分弱で100MBも増えたのでこれはまずいと思ったのと、どうでもいいコードを簡単にテストするなにかがなかった(知らない)ので作りました。機能は非常にしょぼいです。setupとかteardownとかそんな概念はなかった。

テストするサンプルのコードを書いておきます。Githubに上がっているデフォのものと同様です。

Smoothy.test(function(t){
  t.log('equal?');
  t.assert('str, str ok').equal('str','str');
  t.assert('num, num ok').equal(0, 0);
  t.assert('str0, num0 fail').equal('0',0);
  t.assert('1, true fail').equal(1, true);
  t.log('NaN?');
  t.assert('assert nan str ok').nan('string');
  t.assert('assert nan 6 fail').nan(6);
  t.assert('assert not nan 6 ok').not().nan(6);
  t.assert('assert not nan str fail').not().nan('string');
  t.log('type');
  t.assert('string ok').type('str','string');
  t.assert('string fail').not().type('str','string');
  t.assert('number ok').type(0, 'number');
  t.assert('object ok').type({}, 'object');
  t.assert('function ok').type(function(){}, 'function');
  t.log('null');
  t.assert('null ok').nil(null);
  t.assert('str fail').nil('str');
  t.assert('undefined fail').nil(undefined);
});

Smoothyというオブジェクトがテスト用のいろいろを詰め込んだやつで、Smoothy.test()function(t){}みたいな関数を突っ込んでその中でテストします。Smoothy.testは関数のレジスタなので複数書いても大丈夫です。多分。window.onload時に実行されます。

関数の中でt.assert('description').nan('string')みたいな感じで書きます。descriptionには適当に説明を書いてあげてください。画面に出力されます。あまり長いと切れます。

assertionのメソッドはlib/assertion.jsに入ってるのでそれをみてください。現状

  • equal
  • nan
  • type
  • nil

の4種類しか書いていません。メソッドをチェーンさせて.not()とか前置すると結果が反転します。

lib/assertion.jsを例にならって編集してやるとメソッドが追加できます。追加するだけじゃだめでcombineする必要があります。Google Closure Compilerを使うと簡単です。ここから落してきて/usr/bin/直下に置いてlib/makeするとcombineされたやつとminifyされたやつがでてきます。makefileを編集すれば/usr/bin/以外でも動きます。

assertionだけじゃなくてconsole.logっぽく出力もできます。t.log('string')とやるとテキストを出力します。こちらはassertのdescriptionとは違って長くても複数行にわたって表示されます。

本体が相変わらずなにも考えていないコードなのはご愛嬌です。