dar*_*rdo 0 mocha.js node.js express backbone.js
我一直试图通过express node.js项目将单元测试与我的Backbone模型集成,并且难以准确掌握如何完成此任务.(旁注:我来自很多Java背景,我意识到存在差异,但我喜欢到目前为止节点开发环境的简洁和优雅.)
我的问题源于以下问题,骨干模型需要暴露给浏览器才能在其中运行,而通过mocha进行测试是节点运行时环境中的"服务器端".
这是我所说的一个例子:
模型文件:/public/js/backbone/models.js
var SomeModel = Backbone.Model.extend({...});
Run Code Online (Sandbox Code Playgroud)
服务器端测试:/test/backbone/models-test.js
???
Run Code Online (Sandbox Code Playgroud)
我写 ???因为通过服务器端的正常单元测试你只需:
var SomeModule = require('./someModule');
Run Code Online (Sandbox Code Playgroud)
并开始你的快乐方式.显然,由于浏览器没有在Node中运行,因此模块不易获得.
我已经阅读了一些帖子,说明你需要在require.js中包装你的浏览器端javascript,这会将这些javascript文件自动放入节点命名空间,允许你执行一个需求并继续进行测试.但是,我还没有找到完成这项任务的连贯方式,而且我一直试图寻找一些例子,但似乎找不到适用的东西.当然,很可能我对这个框架一般缺乏知识,因为我仍然围绕着如何在javascript中注入事物,注入依赖关系等的整个想法.
任何帮助都会非常感激,如果这个问题已被问过一百万次了,我很抱歉,我确信它已经问了,而且我的问题也不正确.
提前致谢.
如果您有一些仅限节点的代码(如果您只计划在节点下执行它们,则单元测试),您可以采用以下方法:
var Backbone = require('backbone');public/js/backbone.js根据符号链接到该文件node_moules/backbone/backbone.js.如果你有只使用浏览器的代码,你可以使用Backbone全局变量或它的require.jsshimmed版本.
如果你有想要在浏览器中运行但又在节点中工作的代码(比如你的模型),那么最干净的解决方案是使用它编写CommonJS(节点)样式var Backbone = require('backbone');并在节点中以这种方式运行它,但用requirejs包装它将AMD封装器发送到浏览器并使用require.config&require.paths将'backbone'映射到backbone.js文件.
这个非常受欢迎的问题/答案的细节:
也可以看看:
http://backbonetutorials.com/organizing-backbone-using-modules/
| 归档时间: |
|
| 查看次数: |
1106 次 |
| 最近记录: |