Javascript 测试Ember.JS应用程序失败,ReferenceError:未定义Ember

Javascript 测试Ember.JS应用程序失败,ReferenceError:未定义Ember,javascript,ember.js,mocha.js,yeoman,Javascript,Ember.js,Mocha.js,Yeoman,通过great yeomangenerator ember(版本0.7.1)生成一个ember.js项目后,我尝试使用集成的摩卡执行测试 grunt test 或 标准测试工作正常,但它没有引用Ember项目。因此,自己的模型测试抛出 ReferenceError: Ember is not defined at Context.<anonymous> (/home/lray/workspace/js/mediator/test/spec/source_model_test.j

通过great yeoman
generator ember
(版本0.7.1)生成一个ember.js项目后,我尝试使用集成的
摩卡执行测试

grunt test

标准测试工作正常,但它没有引用Ember项目。因此,自己的模型测试抛出

ReferenceError: Ember is not defined
  at Context.<anonymous> (/home/lray/workspace/js/mediator/test/spec/source_model_test.js:9:9)
  at Hook.Runnable.run (/home/lray/workspace/js/mediator/node_modules/mocha/lib/runnable.js:213:32)
  at next (/home/lray/workspace/js/mediator/node_modules/mocha/lib/runner.js:243:10)
  at Object._onImmediate (/home/lray/workspace/js/mediator/node_modules/mocha/lib/runner.js:254:5)
  at processImmediate [as _immediateCallback] (timers.js:330:15)
我的
package.json
看起来没什么变化:

{
  "name": "mediator",
  "version": "0.0.1",
  "dependencies": {  },
  "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-contrib-copy": "~0.4.1",
    "grunt-contrib-concat": "~0.3.0",
    "grunt-contrib-coffee": "~0.7.0",
    "grunt-contrib-uglify": "~0.2.0",
    "grunt-contrib-compass": "~0.5.0",
    "grunt-contrib-jshint": "~0.6.3",
    "grunt-contrib-cssmin": "~0.6.0",
    "grunt-contrib-connect": "~0.3.0",
    "grunt-contrib-clean": "~0.5.0",
    "grunt-contrib-htmlmin": "~0.1.3",
    "grunt-contrib-imagemin": "0.1.4",
    "grunt-contrib-watch": "~0.5.2",
    "grunt-rev": "~0.1.0",
    "grunt-usemin": "~0.1.12",
    "grunt-mocha": "~0.4.1",
    "grunt-open": "~0.2.0",
    "grunt-svgmin": "~0.2.0",
    "grunt-concurrent": "~0.3.0",
    "load-grunt-tasks": "~0.1.0",
    "connect-livereload": "~0.2.0",
    "grunt-ember-templates": "0.4.14",
    "time-grunt": "~0.1.1",
    "grunt-neuter": "~0.5.0",
    "mocha": "~1.9.0",
    "expect.js": "~0.2.0"
},
"scripts": {
    "test": "mocha --recursive test/spec/*.js"
},
  "engines": {
    "node": ">=0.8.0"
  }
}
更新:添加
require(“余烬”)时到测试用例文件,
npm测试
投诉

> mediator@0.0.1 test /home/lray/workspace/js/mediator
> mocha --recursive test/spec/*.js

module.js:340
    throw err;
      ^
Error: Cannot find module 'ember'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/home/lray/workspace/js/mediator/test/spec/source_model_test.js:4:1)
>mediator@0.0.1test/home/lray/workspace/js/mediator
>mocha——递归测试/spec/*.js
module.js:340
犯错误;
^
错误:找不到模块“ember”
在Function.Module.\u解析文件名(Module.js:338:15)
在Function.Module.\u加载(Module.js:280:25)
at Module.require(Module.js:364:17)
根据需要(模块js:380:17)
反对。(/home/lray/workspace/js/mediator/test/spec/source\u model\u test.js:4:1)
grunt测试
只是忽略了测试文件


我是否必须以不同的方式连接到Ember?这样做的最佳方式是什么?先谢谢你

从命令行使用的Mocha是Node.js应用程序

通常,在Node.js中,如果要使用某些东西,必须先安装:

npm install ember
这将在本地
node\u modules
目录中安装Ember

然后您必须调用
require
。在使用mocha进行测试的情况下,在解析这些文件之前,mocha会将
descripe
it
等调用添加到测试文件可用的符号中。这是一种特殊情况,但其他一切都必须以某种方式进行

Ember的Node.js说要做:

require("ember");

并且
Ember
将被添加到您的全局名称空间。

通过对的更新和项目的重建,此问题已解决

嗨@Louis,谢谢你的超快反应。我早些时候尝试过,但当grunt开始忽略测试用例时,mocha抱怨没有找到任何“余烬”模块。你对一种方法有什么不同的想法吗?
npm install ember
require("ember");