SakuraCrowd’s blog

ゲーム製作を中心としたパソコン関係のブログです。気軽にコメントしてください。

SakuraCrowd's BlogSpot にお引越しをしつつあります。
マッハこうもり ver1.1
マッハこうもり ver1.1
BLK2048
BLK2048
CandyMaze
CandyMaze
くの一宅配便
くの一宅配便
団子大砲 ver1.1
団子大砲 ver1.1

プチコン3号 関連記事のリスト
作品集の公開キーは【43K534A3】です。2015/03/04にアップロード。プチコン 3.1.0 で動作確認済みです。
ニンドリ公式ライブラリの公開キー【VK3KN3DM】から、同じ作品集をダウンロードできます。
マッハこうもり(MACH_BAT1_1), BLK2048, CandyMaze, くの一宅配便(9_1DELI)をプレイすることができます。

CandyMazeプチコン3号 - プチコン大喜利のアイディア賞にノミネートされました!
日経ソフトウェア2015年4月号「くの一宅配便」が掲載されました!専用の公開キーは【7474X33J】です。

Unity
団子大砲 ver1.1を公開しました。時間を表示し、ツイートとリセット機能を追加しました。
あほげー 第16回作品にエントリーしました。59作品中36位のあほさらしいです。エントリーしたver1.0はこちらです。

JavaScript のテストフレームワーク Jasmine の勉強

Jasmine というテストフレームワークを勉強中です。

Jasmine を選んだ理由

  • クライアントサイドだけでなくサーバサイドもサポートしている
  • クライアントサイドは jasmine standalone 、サーバサイドは jasmine-node が提供されている。
  • わりと人気がありそう
  • 主観ですが、検索すると結構使われていそうでした。よらば大樹の陰。

Jasmine standalone を使ってみる

バージョン 1.3 と 2.0 系があったので 2.0 系をダウンロードしてみました。
SpecRunner.html というそれっぽいのを起動すると、同梱しているサンプルのテストの実行結果が表示されました。
SpecRunner.html 内で、フレームワークの .js とテスト対象の .js とテストコードの .js を指定して利用します。

jasmine-node を使ってみる

jasmine-node のバージョンは 1.14.3 となっていて、standalone と足並みそろってないのかなと思いました。
こちらは実行対象をファイル単位で指定せず、ディレクトリ単位です。

クライアントサイドのテストコードとの大きな違い

    • クライアントサイドでは script タグで読み込むファイルを require で読み込む。
    • テスト対象の関数の代入先が違う。
    • クライアントサイドでは単純に関数を定義するだけでした。 var func1 = function(){...}
      jasmine-node では、 exports.func1 = func1; としたりして、 exports のプロパティに設定する必要がある。
      これは Jasmine というよりクライアントサイドと node.js の違いかもしれません。

できたらクライアントサイドもサーバサイドもコードを共用したい

クライアントサイドとサーバサイドでそれぞれネットで見つけた FizzBuzz のテストケースを実行できました。
できましたが、まだ不満があります。前述した違いを除くと、テストコードが同じであることです。

同じようなコードをクライアントサイドとサーバサイドの両方で書くことは、DRY のポリシーに反するような気がします。

そこで、同じファイルで実行できないか模索中です。

これは、 Jasmine というよりもクライアントサイドと node.js の話になり、まだまだ難航しているので別に書きたいです。
ぐぐってみると、 typeof window === 'undefined' という条件で分岐させるなどの方法がでているのですが、やり方が悪いらしくうまくいっていません。
クライアントサイドと node.js でコードとそのテストケースを共用できるようにもう少し調べてみます。