我正在使用mocha和chai來測試我的Meteor應用程序,並且有一個使用文檔對象的模塊。測試在服務器上運行,當然會觸發「文檔未定義」。什麼是嘲笑文檔對象或以其他方式使用該文檔的模塊執行測試的好方法?如何在Meteor App中模擬「文檔」對象進行測試?
我試過jsdom,jsdomify等,我也試過按照流星指南的測試部分進行集成測試和全應用測試,但我已經陷入困境。
任何建議或使用像流星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;
}
}
我使用流星1.4.1和使用下列程序包是:
practicalmeteor:摩卡
practicalmeteor:柴
你能發表一些你如何使用'document'的示例代碼嗎?我認爲答案的類型取決於你是否修改它,訪問它的屬性或者調用它的函數以及代碼的客戶特定性。 – Waiski
@Waiski感謝您的評論。我已經添加了一個小例子。由於我使用的PhaserJS/pixi/p2模塊中有許多代碼行,因此我不知道文檔的所有使用方式。但是上面的例子會以最基本的方式觸發錯誤。以下是我正在使用的模塊代碼的鏈接,pixi.js,p2.js和phaser.js:https://github.com/photonstorm/phaser/tree/master/build – mkimmet