我是node.js的新手,我正在尝试在为其添加mocha测试套件的项目中进行协作。我目前的问题是以下
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)
. . .
使用
运行我的测试时$> mocha -u tdd test/test.game.js --reporter spec
公开/ Javascript角/ board.js
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;
}
公开/ Javascript角/ game.js
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;
}
测试/ test.game.js
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);
})
})
server.js
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);
正如你可以看到错误在game.js:8
中,我不知道如何正确配置它,因为当游戏正在播放时它可以正常工作,这意味着new Game()
有效好的,问题是我没有从测试套件中正确配置它。我会感激任何帮助。提前谢谢。
答案 0 :(得分:0)
从您提供的代码中我猜测您需要{game}中的require
board.js,如此:
var Board = require(__dirname + "/../public/javascripts/board.js").Board;
看起来这是一款浏览器游戏,你也在尝试从node.js.这是对的吗?