简体   繁体   中英

mocha, node.js, ReferenceError: Board is not defined

I'm new with node.js and I'm trying to collaborate in a project adding a mocha test suite for it. The issue that I have at the moment is the following

ReferenceError: Board is not defined
at new Game (/Users/.../dr_mojo/public/javascripts/game.js:8:20)
at Context.<anonymous> (/Users/.../dr_mojo/test/test.game.js:13:17)
at Test.Runnable.run (/usr/local/lib/node_modules/mocha/lib/runnable.js:213:32)
at Runner.runTest (/usr/local/lib/node_modules/mocha/lib/runner.js:343:10)
at Runner.runTests.next (/usr/local/lib/node_modules/mocha/lib/runner.js:389:12)
. . .

when run my test with

$> mocha -u tdd test/test.game.js --reporter spec

function Board(width, height) {
  this.board = new Array(width);
  this.width = width;
  this.height = height;
  for( var i = 0; i < width ; ++i) {
    this.board[i] = new Array(height);
  }
}
...
if(typeof module != 'undefined') {
  module.exports.Board = Board;
}

function Game(lvl, speed, music) {
  this.initial = { ... };
  this.board = new Board(board_size[0], board_size[1]);
  ...
}
...
if(typeof module != 'undefined') {
  module.exports.Game = Game;
}

var assert = require("assert");
var Board  = require(__dirname + "/../public/javascripts/board.js").Board;
var Pill   = require(__dirname + "/../public/javascripts/pill.js").Pill;
var Game   = require(__dirname + "/../public/javascripts/game.js").Game;

describe('Game', function(){
  it('Clears a row', function(){
    var game  = new Game();
    var pill1 = new Pill(game.board, game.detector, [ {x : 0 , y : 0 }, {x : 1, y : 0 } ],["red", "red"]);
    var pill2 = new Pill(game.board, game.detector, [ {x : 2 , y : 0 }, {x : 3, y : 0 } ],["red", "red"]);

    assert.equal(game.board.matches().length, 1);

    game.findMatches(function(){});
    assert.equal(game.board.matches().length, 0);
  })
})

var express = require('express'),
    port    = 8888;

var app = express.createServer();

app.use(express.static(__dirname + '/public'));
app.set("view engine", "jade");
app.set('view options', { layout: false });

app.get('/play', function(req, res){
  res.render('play_game');
});

app.listen(port);

As you can see the error is in game.js:8 the thing is that I don't know how to configure it properly given that when the game is playing it works ok, this means that new Game() works ok and the problem is that I'm not configuring it properly from the test suite. I'll appreciate any help. Thanks in advance.

From the code you provided my guess is that you'll need to require board.js from game.js like so:

var Board  = require(__dirname + "/../public/javascripts/board.js").Board;

It looks like this is a browser game that you're also testing from node.js. Is that correct?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM