不确定我在哪里出错:
test.js
let chai = require('chai'),
should = chai.should(),
game = require('../src/game');
it('should be able to start the game', () => {
game.start();
game.started.should.be.true;
});
game.js
var board = require('./board'),
hasStarted = false;
module.exports = {
start: start,
started: hasStarted
};
function start(){
hasStarted = true;
};
对于测试我得到断言错误:
AssertionError: expected false to be true
我以为我已经在start()方法中设置了它,为什么我的测试仍然失败并且是假的?
答案 0 :(得分:4)
您已为模块导出指定了hasStarted
的初始值,但在调用start()
时没有更改。
使用函数来检索它而不是变量,即:
module.exports = {
start: start,
started: function() { return hasStarted; }
};
答案 1 :(得分:0)
由于您使用的局部变量是原始类型,因此在调用start方法后它不会反映.js中的原始类型按值传递。
var hasStarted = {
isStarted: false
};
var game = {
start: start,
started: hasStarted
};
function start() {
hasStarted.isStarted = true;
};
module.exports = game;
这可以预期