这篇文章展示了如何将three.js置入[link:https://nodejs.org/en/ node.js]环境中, 这样你就可以执行自动化测试了。测试可以通过命令行或者类似[link:https://travis-ci.org/ Travis]的CI工具来运行。
			如果你习惯使用node和npm,
			
				$ npm install three --save-dev
			
			并将
		
			var THREE = require('three');
		
			添加到你的测试中。
		
如果你不太熟悉这些工具,下面是一个快速入门。(基于linux,在windows上的安装过程会稍稍有点不一样,不过NPM指令是相同的。)
$ sudo apt-get install -y npm nodejs-legacy
# 修复默认registry URL中任何SSL的问题
$ npm config set registry http://registry.npmjs.org/
					
				
						 $ mkdir test-example; cd test-example
					
				
					 $ npm init
					
					 在所有出现的提示中敲击回车键来接受默认值。
					 这样,一份package.json就建立好了。
				
$ npm test
					
					当然,这一定会失败。
					如果你检查一下package.json,test script的定义是这样的
					
						"test": "echo \"Error: no test specified\" && exit 1"
					
				
$ npm install mocha --save-dev
					
					你会注意到 node_modules/ 被创建了,并且你的依赖都出现在了这里面。
					还有你的package.json被更新了,--save-dev指令向其中加入并更新了devDependencies属性。
				
						"test": "mocha --reporter list"
					
				
						$ npm test
					
					现在应该就能成功执行了,生成类似 0 passing (1ms) 的报告。
				
$ npm install three --save-dev
					
					
								$ npm show three versions
							
						  	来确认哪些是可用的。要让npm使用正确的版本,执行
							
 $ npm install three@0.84.0 --save
							
							(例子中用的是0.84.0)。 --save 指令将此加入项目的dependency而不是dev dependency。
							更多信息请参阅这份文档。
						
					$ mkdir test
					
				
var THREE = require('three');
var assert = require("assert");
describe('The THREE object', function() {
  it('should have a defined BasicShadowMap constant', function() {
    assert.notEqual('undefined', THREE.BasicShadowMap);
  }),
  it('should be able to construct a Vector3 with default of x=0', function() {
    var vec3 = new THREE.Vector3();
    assert.equal(0, vec3.x);
  })
})
				
The THREE object should have a defined BasicShadowMap constant: 0ms
The THREE object should be able to construct a Vector3 with default of x=0: 0ms
2 passing (8ms)
				
				第2、3条会根据你组织代码的方式而改变。在上面给出的Physics.js的例子中,导出的部分在代码的最末尾。 我们将module.exports赋值为一个对象:
//=============================================================================
// 为了在nodejs中可用
//=============================================================================
if (typeof exports !== 'undefined')
{
  module.exports = Physics;
}
			
		如果你已经在使用require.js或者browserify之类的便捷工具,就跳过这个部分。
一般来说,一个three.js项目将在浏览器中运行,浏览器会通过执行一系列script标签来加载模块。 你自己的文件不用考虑依赖的问题。然而在nodejs环境中,没有一个关联所有文件的index.html,所以你需要显式地加载。
如果你要导出的模块还依赖其他文件,你需要告诉node去加载它们。下面是一种方式:
//=============================================================================
// 服务器端测试配置
//=============================================================================
if (typeof require === 'function') // 检测nodejs环境
{
  var THREE = require('three');
  var MY3 = require('./MY3.js');
}