Node.js module.exports的目的是什么,你如何使用它?
我似乎无法找到任何关于此的信息,但它似乎是Node.js的一个相当重要的部分,因为我经常在源代码中看到它.
根据Node.js文档:
模
对当前的参考
module.特别module.exports是与exports对象相同.有关src/node.js更多信息,请参阅
但这并没有真正帮助.
究竟module.exports做了什么,一个简单的例子是什么?
我正在研究Chrome中的扩展程序,我想知道:什么是找出元素何时出现的最佳方法?使用普通的javascript,检查直到元素存在的间隔,或jQuery有一些简单的方法来做到这一点?
什么用于node.js的BDD和TDD?
我习惯使用Cucumber + RSpec.node.js有什么好的组合?
谢谢
我的测试可以在没有Meteor运行的情况下存在吗?
我刚刚开始了我的第一个Meteor项目,并开始使用Mocha和should.js编写单元测试.虽然mocha运行没有问题,但测试阻止Meteor启动,因为它使用节点require 而不是__meteor_bootstrap__.require(完整错误消息)有问题.
话虽这么说,Meteor不应该运行我的测试!根据Meteor文档,代码只能放在客户端,服务器或两者上.单元测试套件不属于这些类别,并且我不是唯一被Meteor缺乏定位自动化测试位置的人所困惑的人.
现在,我的测试保存在server/test/,每个文件的内容都包含在块中:
if (typeof(Meteor) === 'undefined') { ... }
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但感觉并不优雅.您对使用Meteor应用程序构建测试有任何其他建议吗?
更新:代替Meteor文档中的显式指令,我遵循Rails文件夹约定(第4段),使用一个名为test存储我的测试资产的文件夹.后来server/test我把它移到了,因为我不希望它加载到客户端上.
我对livingata进行了一些更改,并希望运行livedata_test.你如何使用tinytest来运行livedata_test?
我目前正在研究流星框架,这个问题立即浮现在脑海中.我编写的代码(例如Template.xxx代码或Template.xxx.events)是否可以以任何方式测试?
当然,您可以像测试任何其他代码一样测试未绑定到流星运行时的代码,但我的印象是,您将在流星内部编写的大多数代码都以某种方式限定为流星及其功能.
这不是技术问题; 我看到很多人都在使用看起来很整洁的Mocha,所以我会尝试一下.
我想知道的是人们如何处理测试与Meteor集合相关的模型之类的东西.你会用sinon来模拟数据库记录吗?是否存在require可以使用的框架文件,以便您可以使用Meteor.Collection?
编辑
更具体地说,我正在编写一个使用几个Minimongoid模型的应用程序.如果您已经看过其中一个,那么您知道每个模型的@_collection属性都是new Meteor.Collection(...).
拥有模型而不是数据库记录的主要优点之一是您可以将行为附加到它,而这种行为就是我想要测试的行为.
所以,假设你在棋盘上有一个涉及两件的游戏.当玩家点击一块时,我们希望通过突出显示方块来显示棋盘上的所有合法移动.该作品有一种方法,根据作品的移动方式以及是否有其他作品确定给定位置是否构成合法移动; 确定路上是否有碎片可能需要数据库查询:
class Piece extends Minimongoid
@_collection: new Meteor.Collection('pieces')
@find: (selector = {}, options = {}) ->
document = @_collection.findOne(selector, options)
if document
model = new @(document)
_.extend(model, model.attributes)
@where: (selector = {}, options = {}) ->
@_collection.find(selector, options).map (record) =>
model = new @(record)
_.extend(model, model.attributes)
class Bishop extends Piece
@code: "bishop"
isLegalMove: (location) ->
@isOnMyPath(location) && @noPiecesInMyWay(location) …Run Code Online (Sandbox Code Playgroud)