miyohideの日記

技術的なメモなどを記しています

2020年4月14日(火)

WEB+DB PRESS Vol.115に載っていたJavaScriptプログラムにテストを書いてみた

WEB+DB PRESS Vol.115には「特集3 小一時間でゲームを作る」という特集があり、JavaScriptで簡単なゲームを実装する方法が掲載されています。

このサンプルにはテストが書かれていなかったので、勉強ついでにテストを書くことにしました。

リポジトリは以下のもの。

github.com

カバレッジが95%を超えたのでまあ、大抵のテストを書くことはできたかなという感じ。

戦略は、

  • ひとつのJavaScriptファイルで作られていたのを細かい単位に分割
    • その分割した単位でテストを細々と書いていく
  • ある程度分割できたら、実際にブラウザで行う操作と同じ処理をテストで実装するようにする

と言った感じで王道中の王道です。

テスティングフレームワークはJestを使いました。

jestjs.io

ブラウザで行う操作と同じ処理をテストで実装する方法については、JestのDOM Manipulationの説明を参考に。

jestjs.io

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かなと。