2
Phaserなどのステートフルフレームワークのユニットテスト
TL; DRステートフルなフレームワーク内で作業する場合、自動化された単体テストを簡略化するための手法を特定するのに役立ちます。 バックグラウンド: TypeScriptとPhaserフレームワークでゲームを書いています。Phaserは、コードの構造をできるだけ制限しないHTML5ゲームフレームワークとしての地位を占めています。これにはいくつかのトレードオフが伴います。つまり、キャッシュ、物理、ゲームの状態など、すべてにアクセスできるGod-object Phaser.Gameが存在します。 このステートフル性は、私のタイルマップなどの多くの機能をテストすることを本当に困難にします。例を見てみましょう: ここでは、タイルレイヤーを正しくテストして、タイルマップ内の壁と生き物を識別できるかどうかをテストしています。 export class TilemapTest extends tsUnit.TestClass { constructor() { super(); this.map = this.mapLoader.load("maze", this.manifest, this.mazeMapDefinition); this.parameterizeUnitTest(this.isWall, [ [{ x: 0, y: 0 }, true], [{ x: 1, y: 1 }, false], [{ x: 1, y: 0 }, true], [{ x: 0, y: 1 }, …