1
由于Node.js为所需模块创建全局单例,我如何在每个测试中创建下面我的游戏的独特实例?我想确保每次开始游戏时,它都是从一个新的游戏对象开始的,它将开始初始化为false。在每次测试中为所需模式模块创建新对象
现在game.start,游戏是每个测试中使用的同一个单例,我不希望这样,我不应该在每次测试中分享这个单例,这显然很糟糕。
let chai = require('chai'),
should = chai.should(),
game = require('../src/game');
describe('Starting the Game',() => {
it('should be able to start the game',() => {
game.start();
game.started.should.be.true;
});
it('should contain a new board to play on when game starts',() => {
game.start();
game.started.should.be.true;
should.exist(game.board);
});
});
game.js
var board = require('./board'),
player = require('./player');
var game = module.exports = {
start: start,
started: false,
board: board.create()
};
function start(){
game.started = true;
};
我在之前做的是通过这样做是为了克隆它:JSON.parse(JSON。字符串化(游戏));游戏是必需的模块。这对我有用,但是在寻找替代品,任何人告诉我,如果这对我来说是安全或正常的。 – PositiveGuy
是啊所以你基本上改变这个不再使用节点模块,但新的ES6类与出口? – PositiveGuy
有趣我没有必要添加完成()和我的测试运行绿色和失败时,他们也应该。 – PositiveGuy