簡體   English   中英

無法將未定義或null轉換為對象

[英]Cannot convert undefined or null to object

不知道我在哪里出錯了:

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()方法中設置了它,所以為什么我的測試仍然失敗並顯示false?

您已經為模塊導出分配了hasStarted初始值,它的初始值並未因調用start()而改變。

使用函數而不是變量來檢索它,即:

module.exports = {
    start: start,
    started: function() { return hasStarted; }
};

由於您使用的局部變量是原始類型,因此在調用start方法后不會反映出來.js中的原始類型是按值傳遞的。

var hasStarted = {
    isStarted: false
};
var game = {
    start: start,
    started: hasStarted
};

function start() {
    hasStarted.isStarted = true;
};

module.exports = game;

如果您期望,這將起作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM