【发布时间】:2019-09-05 11:46:45
【问题描述】:
我目前正在 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);
})
});
但由于 Phaser 依赖于在浏览器中运行,所以当我运行它时,它会抱怨无法访问 Phaser 中的 window 和 document 等元素。
我收到如下错误:
ReferenceError: 文档未定义
有人有测试 Phaser 游戏的经验吗?我似乎无法在网上找到任何有关它的信息。甚至可以测试相位游戏吗?
至于其他测试框架,我也研究了 nightwatch,但是它的 Phaser 支持已经过时,而且它主要是 e2e 而不是单元测试,所以它不是我想要的。我还在网上看到有人开发了 Phaser 2.4.7 的 shimming 版本,但现在已经过时了,因为 Phaser 3 发生了很大变化。
【问题讨论】:
-
我最近发现 Phaser.Game 可以使用 Phaser.HEADLESS 类型创建,在描述中具有“...此模式用于单元测试...”。在尝试正确回答之前,我将此评论放在这里。