Bla*_*oat 83
更新3:从Meteor 1.3开始,meteor包含一个测试指南,其中包含有关单元,集成,验收和负载测试的逐步说明.
更新2:截至2015年11月9日,不再维护Velocity.Xolv.io正致力于Chimp,流星开发组必须选择官方测试框架.
更新:Velocity是Meteor的官方测试解决方案,截至0.8.1.
目前关于使用Meteor进行自动化测试的文章并不多.我希望Meteor社区能够在官方文档中建立任何内容之前发展测试最佳实践.毕竟,流星本周达到了0.5,事情仍在迅速变化.
好消息:你可以在Meteor上使用Node.js测试工具.
对于我的流星的项目,我跑我的单元测试与摩卡使用柴的断言.如果您不需要Chai的完整功能集,我建议使用should.js.我目前只进行单元测试,但你也可以用Mocha编写集成测试.
请务必将测试放在"tests"文件夹中,以便Meteor不会尝试执行测试.
Mocha支持CoffeeScript,我选择Meteor项目的脚本语言.这是一个示例Cakefile,其中包含运行Mocha测试的任务.如果您在Meteor中使用JS,请随意调整Makefile的命令.
您的Meteor模型需要稍微修改才能将自己暴露给Mocha,这需要了解Node.js的工作原理.将每个Node.js文件视为在其自己的范围内执行.Meteor自动将不同文件中的对象相互暴露,但普通的Node应用程序(如Mocha)不会这样做.要使我们的模型可以通过Mocha测试,请使用以下CoffeeScript模型导出每个Meteor模型:
# Export our class to Node.js when running
# other modules, e.g. our Mocha tests
#
# Place this at the bottom of our Model.coffee
# file after our Model class has been defined.
exports.Model = Model unless Meteor?
Run Code Online (Sandbox Code Playgroud)
...在Mocha测试的顶部,导入您要测试的模型:
# Need to use Coffeescript's destructuring to reference
# the object bound in the returned scope
# http://coffeescript.org/#destructuring
{Model} = require '../path/to/model'
Run Code Online (Sandbox Code Playgroud)
有了它,您可以开始使用Meteor项目编写和运行单元测试!
zea*_*ker 14
我意识到这个问题已经得到了解答,但我认为这可以使用一些更多的上下文,以提供所述上下文的附加答案的形式.
我一直在使用meteor进行应用程序开发,以及通过实现流星核心包以及大气层的包开发.
听起来你的问题可能实际上是一个问题,分为三个部分:
并且,听起来在某处可能存在一个奖励问题:4.如何实现1,2和3的持续集成?
我一直在谈论并开始与流星核心团队的Naomi Seyfer(@sixolet)合作,以帮助在文档中获得所有这些问题的明确答案.
我向流星核心提交了一个初始拉取请求,解决了1和2:https://github.com/meteor/meteor/pull/573.
我最近也回答了这个问题: 你如何进行流星测试?
我认为@Blackcoat明确地回答了上述3.
至于奖金,4,我建议至少使用circleci.com为你自己的应用程序进行持续集成.他们目前支持@Blackcoat描述的用例.我有一个项目,我已经成功地用coffeescript编写了用mocha运行单元测试的测试,就像@Blackcoat所描述的那样.
为了继续整合流星核心和智能套装,Naomi Seyfer和我正在与circleci的创始人聊天,看看我们能否在短期内实现一些非常棒的功能.
Xol*_*.io 12
RTD现已被弃用,并被Velocity取代,Velocity是Meteor 1.0的官方测试框架.随着Velocity的大力发展,文档仍然相对较新.您可以在Velocity Github repo,Velocity主页和The Meteor测试手册(付费内容)上找到更多信息.
免责声明:我是Velocity的核心团队成员之一,也是本书的作者.
查看RTD,这是Meteor的完整测试框架,rtd.xolv.io.它支持Jasmine/Mocha/custom,适用于普通JS和咖啡.它还包括测试覆盖,它结合了单元/服务器/客户端覆盖.
和示例项目在这里
一个博客来解释单元测试与流星这里
这里使用Selenium WebdriverJS和Meteor的e2e验收测试方法
希望有所帮助.免责声明:我是RTD的作者.
我经常使用这个页面并尝试了所有的答案,但从初学者的起点开始,我发现它们很混乱.一旦遇到任何麻烦,我对如何修复它们感到困惑.
这个解决方案开始时非常简单,如果还没有完整记录,那么我推荐给像我这样想要做TDD但不确定如何在JavaScript中进行测试以及哪些库插入到什么内容的人:
https://github.com/mad-eye/meteor-mocha-web
仅供参考,我发现我还需要使用路由器Atmosphere软件包来制作'/ tests'路线来运行并显示测试结果,因为我不想让它在每次加载时都混乱我的应用程序.
关于tinytest的用法,你可能想看看那些有用的资源:
这个截屏视频介绍了基础知识:https: //www.eventedmind.com/feed/meteor-testing-packages-with-tinytest
一旦理解了这个想法,你就会想要公开的API文档tinytest.目前,唯一的文档是在tinytest软件包源代码的末尾:https://github.com/meteor/meteor/tree/devel/packages/tinytest
另外,在截屏视频中test-helpers,你可能想看看这里所有可用的帮助器:https:
//github.com/meteor/meteor/tree/devel/packages/test-helpers
每个内部通常都有一些文档.文件
挖掘流星包的现有测试将提供很多例子.这样做的一个方法是使搜索Tinytest.或test.在流星的源代码包目录
在即将发布的1.3版本中,测试成为Meteor的核心部分。最初的解决方案基于Mocha和Chai。
最小可行设计的原始讨论可以在这里找到,而第一个实现的细节可以在这里找到。
MDG为测试提供了指导文档的原始内容,可以在这里找到,这里有一些示例测试。
这是上面链接中的发布测试示例:
Run Code Online (Sandbox Code Playgroud)it('sends all todos for a public list when logged in', (done) => { const collector = new PublicationCollector({userId}); collector.collect('Todos.inList', publicList._id, (collections) => { chai.assert.equal(collections.Todos.length, 3); done(); }); });
| 归档时间: |
|
| 查看次数: |
14418 次 |
| 最近记录: |