Javascript 测试Ember.JS应用程序失败,ReferenceError:未定义Ember
通过great yeomanJavascript 测试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
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");