【发布时间】:2016-12-30 21:07:13
【问题描述】:
我正在使用 mocha 和 chai 来测试我的 Meteor 应用程序,并且有一个使用文档对象的模块。测试在服务器上运行,这当然会触发“文档未定义”。模拟文档对象或使用使用文档的模块执行测试的好方法是什么?
我已经尝试过 jsdom、jsdomify 等,我还尝试按照 Meteor Guide 的测试部分进行集成测试和全应用测试,但我卡住了。
非常感谢任何关于使用像 jsdom 这样的包和流星的建议或示例。
编辑 - 添加示例
这是我正在尝试做的一个非常小的示例。我已将其砍掉,以便在不添加 PhaserJS 的情况下触发错误。但是,由于它是一个使用 PhaserJS 的项目,需要 pixi 和 p2,因此很难说出 pixi/p2/Phaser 需要对文档进行的所有操作。
/test/game.test.js
import { chai } from 'meteor/practicalmeteor:chai';
import {Game} from '/imports/game.js';
var assert = chai.assert;
if(Meteor.isClient){
describe('Game', function () {
it('can add 2 + 3 and return 5 with addNumbers function.', function () {
//arrange
var game = new Game();
//act
var result = game.addNumbers(2,3);
//assert
assert.equal(result, 5);
});
});
}
/imports/docChanger.js
//simulates pixi
(function(){
var docChanger = {};
docChanger.canvas = document.createElement('canvas');
return docChanger;
}).call(this);
/imports/game.js
import docChanger from '/imports/docChanger.js';
export class Game {
constructor(){
this.docChanger = docChanger;
}
addNumbers(x,y){
return x+y;
}
}
我正在使用 Meteor 1.4.1 并且正在使用以下软件包:
实用流星:摩卡
实用流星:柴
【问题讨论】:
-
你能发布一些你如何使用
document的示例代码吗?我认为答案取决于你是否修改它、访问它的属性或调用它的函数以及代码是如何特定于客户端的。 -
@Waiski 感谢您的评论。我添加了一个小例子。我不知道使用文档的所有方式,因为我正在使用的 PhaserJS/pixi/p2 模块中有很多行代码。但是上面的例子会以最基本的方式触发错误。这是我正在使用的模块 pixi.js、p2.js 和 phaser.js 的代码链接:github.com/photonstorm/phaser/tree/master/build
标签: javascript testing meteor