无法将undefined或null转换为object

时间:2015-11-29 09:22:40

标签: javascript node.js

不确定我在哪里出错:

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()方法中设置了它,为什么我的测试仍然失败并且是假的?

2 个答案:

答案 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;

这可以预期