【问题标题】:How do I use Jasmine to test a Phaser 3 project?如何使用 Jasmine 测试 Phaser 3 项目?
【发布时间】: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 中的 windowdocument 等元素。

我收到如下错误:

ReferenceError: 文档未定义

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

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

【问题讨论】:

标签: jasmine phaser-framework


【解决方案1】:

好的,我有一些工作!

这是最低要求,但 Phaser 可以在没有错误的情况下实例化。

package.json

{
  "scripts": {
    "test": "jasmine --config=jasmine.json"
  },
  "devDependencies": {
    "canvas": "^2.8.0",
    "jasmine": "^3.7.0",
    "jsdom": "^16.6.0",
    "jsdom-global": "^3.0.2"
  },
  "dependencies": {
    "phaser": "^3.55.2"
  }
}

jasmine.json

{
  "spec_dir": "spec",
  "spec_files": [
    "**/*[sS]pec.js"
  ]
}

spec/Phaser.Spec.js

require('canvas');
require('jsdom-global')();
const Phaser = require("phaser");

describe("A suite", function () {

    it("Instantiate a Phaser.Game", function () {
        let game = new Phaser.Game({ type: Phaser.HEADLESS });

        expect(game).not.toBe(null);
    })

})

控制台的输出是:

$ jasmine --config=jasmine.json
Randomized with seed 06585
Started
     Phaser v3.55.2-FB (Headless | HTML5 Audio)  https://phaser.io
.


1 spec, 0 failures
Finished in 0.016 seconds
Randomized with seed 06585 (jasmine --random=true --seed=06585)
✨  Done in 1.28s.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-01
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多