WEB+DB PRESS Vol.115に載っていたJavaScriptプログラムにテストを書いてみた
WEB+DB PRESS Vol.115には「特集3 小一時間でゲームを作る」という特集があり、JavaScriptで簡単なゲームを実装する方法が掲載されています。
このサンプルにはテストが書かれていなかったので、勉強ついでにテストを書くことにしました。
リポジトリは以下のもの。
カバレッジが95%を超えたのでまあ、大抵のテストを書くことはできたかなという感じ。
戦略は、
- ひとつのJavaScriptファイルで作られていたのを細かい単位に分割
- その分割した単位でテストを細々と書いていく
- ある程度分割できたら、実際にブラウザで行う操作と同じ処理をテストで実装するようにする
と言った感じで王道中の王道です。
テスティングフレームワークはJestを使いました。
ブラウザで行う操作と同じ処理をテストで実装する方法については、JestのDOM Manipulationの説明を参考に。
document.body.innerHTML = '<div></div>'
でJavaScriptを動かすHTMLページを作っておいて
main = require('../lib/main')
と書くとlib/main.js
に書かれた処理が実行されるので、後は
const wDown = new window.KeyboardEvent('keydown', { key: 'w' }) main.onKeyDown(wDown)
としてキーボードイベントをlib/main.js
に書いたonKeyDown
関数に流しています。これでいいかどうかはよく分かりませんが、まあ動いているのでOKかなと。