如何使用 Jasmine 测试 Phaser 3 项目?

Tho*_*eus 3 jasmine phaser-framework

我目前正在phaser.js框架中开发一个小游戏,由于项目范围相当大,我真的很想进行单元测试。然而,当尝试在 Jasmine 中为 Phaser 设置单元测试时,我遇到了有关依赖项的错误。

我对 Jasmine 或任何其他测试框架没有经验,所以我可能忽略了对经验丰富的开发人员来说显而易见的事情。

我的 .spec 文件如下所示:

describe("motorMain", function() {
    var Phaser = require('../phaser');
    var MotorMain = require("../motorMain"); 

    var motorMain;
    var phaser;

    beforeEach(function() {
        phaser = new Phaser();
        motorMain = new motorMain();
      });

    it("should increase the score if a object is clicked", function(){
        var scoreBeforeClicking = motorMain.score;
        var gameobject;
        motorMain.clickhandler("",gameobject);
        expect(scoreBeforeClicking+1).toEqual(score);
    })
});
Run Code Online (Sandbox Code Playgroud)

但由于 Phaser 依赖于在浏览器中运行,当我运行它时,它抱怨无法访问Phaser 中的window和 等元素。document

我收到如下错误:

ReferenceError:文档未定义

有人有测试 Phaser 游戏的经验吗?我在网上似乎找不到任何有关它的信息。甚至可以测试移相游戏吗?

至于其他测试框架,我也研究过 nightwatch,但它的 Phaser 支持已经过时,而且它主要是 e2e 而不是单元测试,所以它不是我想要的。我还在网上看到有人开发了Phaser 2.4.7的shimming版本,但是现在已经过时了,Phaser 3已经发生了很大的变化。

小智 6

好的,我有工作了!

\n

这是最低限度,但 Phaser 可以毫无错误地实例化。

\n

包.json

\n
{\n  "scripts": {\n    "test": "jasmine --config=jasmine.json"\n  },\n  "devDependencies": {\n    "canvas": "^2.8.0",\n    "jasmine": "^3.7.0",\n    "jsdom": "^16.6.0",\n    "jsdom-global": "^3.0.2"\n  },\n  "dependencies": {\n    "phaser": "^3.55.2"\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

茉莉花.json

\n
{\n  "spec_dir": "spec",\n  "spec_files": [\n    "**/*[sS]pec.js"\n  ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n

规格/Phaser.Spec.js

\n
require(\'canvas\');\nrequire(\'jsdom-global\')();\nconst Phaser = require("phaser");\n\ndescribe("A suite", function () {\n\n    it("Instantiate a Phaser.Game", function () {\n        let game = new Phaser.Game({ type: Phaser.HEADLESS });\n\n        expect(game).not.toBe(null);\n    })\n\n})\n
Run Code Online (Sandbox Code Playgroud)\n

控制台的输出是:

\n
$ jasmine --config=jasmine.json\nRandomized with seed 06585\nStarted\n     Phaser v3.55.2-FB (Headless | HTML5 Audio)  https://phaser.io\n.\n\n\n1 spec, 0 failures\nFinished in 0.016 seconds\nRandomized with seed 06585 (jasmine --random=true --seed=06585)\n\xe2\x9c\xa8  Done in 1.28s.\n
Run Code Online (Sandbox Code Playgroud)\n