Так как 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. stringify (игра)); где игра является обязательным модулем. Это работало для меня, но я искал альтернативы и всех, кто сказал мне, безопасно или нормально делать в моем случае. – PositiveGuy
да, поэтому вы в основном меняете это, чтобы больше не использовать модуль узла, а новые классы ES6 с экспортом? – PositiveGuy
Интересно, что мне не приходилось добавлять done(), и мои тесты запускаются зеленым цветом и не работают, когда они также должны. – PositiveGuy