meteortesting驱动开发

我不知道如何做meteor的testing驱动开发。

在文档或常见问题中,我没有看到它提到的任何地方。 我没有看到任何例子或类似的东西。

我看到一些软件包正在使用Tinytest。

我需要开发者的回应,这是什么路线图。 有些东西是:

  • 可能的,没有文件,自己弄清楚
  • meteor并不是以可以制作可testing应用程序的方式构build的
  • 这是计划的function
  • 等等

更新3 :从meteor1.3开始,meteor包含一个testing指南 ,包含单元,集成,验收和负载testing的分步说明。

更新2 :截至2015年11月9日, Velocity不再维持 。 Xolv.io专注于Chimp , meteor发展集团必须select正式的testing框架 。

更新 : Velocity是meteor 0.8.1 的官方testing解决scheme 。


目前关于Meteor的自动化testing还没有写得太多。 我希望Meteor社区能够在官方文档中build立任何东西之前先发展最佳实践。 毕竟,meteor本周达到了0.5,事情还在迅速变化。

好消息是, 您可以使用Meteor的Node.jstesting工具

对于我的Meteor项目,我使用Chai来执行Mocha的unit testing来进行断言。 如果你不需要Chai的全部function,我推荐使用should.js 。 我目前只有unit testing,但是你也可以用Mocha写集成testing。

一定要把你的testing放在“testing”文件夹中,这样meteor不会试图执行你的testing。

摩卡支持CoffeeScript ,我selectMeteor项目的脚本语言。 这里有一个示例Cakefile,其中包含用于运行Mochatesting的任务。 如果你使用JS和Meteor,可以随意修改Makefile的命令。

您的Meteor模型需要稍微修改才能将自己展示给Mocha,这需要了解Node.js如何工作的一些知识。 把每个Node.js文件想象成在自己的范围内执行。 Meteor会自动将不同文件中的对象公开给对方,但是普通的Node应用程序(如Mocha)不会这样做。 为了使我们的模型可以通过Mocha进行testing,请使用以下CoffeeScript模式导出每个Meteor模型:

# Export our class to Node.js when running # other modules, eg 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? 

…在你的摩卡testing的顶部,导入你想testing的模型:

 # Need to use Coffeescript's destructuring to reference # the object bound in the returned scope # http://coffeescript.org/#destructuring {Model} = require '../path/to/model' 

有了这个,你可以开始编写和运行Meteor项目的unit testing!

大家好,结帐莱卡 – 全新的meteortesting框架http://arunoda.github.io/laika/

您可以一次testing服务器和客户端。

  • 在这里看到一些laika的例子
  • 看到这里的function
  • 看到laika 后面的概念
  • 请参阅Github存储库

免责声明:我是Laika的作者。

我意识到这个问题已经有了答案,但是我认为这可以使用更多的上下文,以提供上下文的附加答案的forms。

我一直在用meteor来做一些应用程序的开发,还有包的开发,都是通过实现meteor核心以及大气层的包装。

听起来你的问题实际上可能是一个问题,分三部分:

  1. 如何运行整个meteortesting套件?
  2. 如何编写和运行单个智能软件包的testing?
  3. 如何为自己的应用程序编写和运行testing?

而且,这听起来似乎在某处可能有一个奖励问题:4.如何实现1,2和3的持续集成?

我一直在谈论并开始与meteor核心团队的 Naomi Seyfer(@sixolet)合作,以帮助将所有这些问题的确切答案写入文档。

我已经向meteor核心提交了一个初始的请求1和2: https : //github.com/meteor/meteor/pull/573 。

我最近也回答了这个问题: 你如何运行meteortesting?

我认为@Blackcoat已经明确地回答了3。

至于奖金,4,我会build议使用circleci.com至less做你的应用程序的持续集成。 他们目前支持@Blackcoat所描述的用例。 我有一个项目,我已经成功地获得了用咖啡书写的testing,用摩卡进行unit testing,就像@Blackcoat所描述的那样。

为了持续整合meteor核心和智能包装,Naomi Seyfer和我正在和circleci的创始人聊天,看看我们能否在短期内获得可观的成果。

RTD现在已被弃用,并被Velocity替代,这是Meteor 1.0的官方testing框架。 由于Velocity正处于重大的发展阶段,文档还是比较新的。 你可以find更多关于Velocity Github回购 , Velocity主页和meteortesting手册 (付费内容)的信息,

免责声明:我是Velocity的核心团队成员之一,也是本书的作者。


在这里查看RTD,一个完整的meteortesting框架rtd.xolv.io。 它支持茉莉花/摩卡/定制和平原JS和咖啡。 它也包括testing覆盖,结合单位/服务器/客户端覆盖。

还有一个示例项目

在这里用Meteor来解释unit testing的博客

在这里使用Selenium WebdriverJS和Meteor的e2e验收testing方法

希望有所帮助。 免责声明:我是RTD的作者。

我使用了这个页面,并尝试了所有的答案,但从我的初学者的起点来看,我发现它们很混乱。 一旦遇到任何困难,我就不知如何修理它们了。

这个解决scheme非常简单,如果尚未完整logging,那么我推荐给像我这样的人,他们想要做TDD,但不确定如何在JavaScript中testing工作,哪些库插入什么:

https://github.com/mad-eye/meteor-mocha-web

仅供参考,我发现我还需要使用路由器的Atmosphere包做一个“/ tests”路由来运行并显示testing的结果,因为我不希望它在每次加载的时候混乱我的应用程序。

关于tinytest的用法,你可能想看看这些有用的资源:

  1. 以下屏幕录像介绍了基本知识: https : //www.eventedmind.com/feed/meteor-testing-packages-with-tinytest

  2. 一旦你理解了这个想法,你就需要公开的API文档来进行tinytest 。 现在,唯一的文档就是tinytest包源代码的最后tinytest : https : //github.com/meteor/meteor/tree/devel/packages/tinytest

  3. 此外,屏幕录像讲述了test-helpers ,你可能想看看这里所有可用的助手: https : //github.com/meteor/meteor/tree/devel/packages/test-helpers经常有一些每个文件内的文档

  4. 挖掘meteor包装的现有testing将提供很多例子。 做这个的一个方法就是searchTinytest.test. 在meteor的源代码的包目录中

我正在浏览器中使用Meteor + Mocha进行function/集成testing。 我有以下几行(在咖啡脚本更好的可读性):

在客户端…

 Meteor.startup -> Meteor.call 'shouldTest', (err, shouldTest) -> if err? then throw err if shouldTest then runTests() # Dynamically load and run mocha. I factored this out in a separate method so # that I can (re-)run the tests from the console whenever I like. # NB: This assumes that you have your mocha/chai scripts in .../public/mocha. # You can point to a CDN, too. runTests = -> $('head').append('<link href="/mocha/mocha.css" rel="stylesheet" />') $.getScript '/mocha/mocha.js', -> $.getScript '/mocha/chai.js', -> $('body').append('<div id="mocha"> </div>') chai.should() # ... or assert or explain ... mocha.setup 'bdd' loadSpecs() # This function contains your actual describe(), etc. calls. mocha.run() 

…在服务器上:

 Meteor.methods 'shouldTest': -> true unless Meteor.settings.noTests # ... or whatever. 

当然,你可以用同样的方法来做你的客户端单元testing。 尽pipe如此,对于集成testing来说,拥有所有的Meteor基础架构是非常好的。

在即将到来的1.3版本中,testing成为Meteor的核心部分。 最初的解决scheme是基于Mocha和Chai。

最小可行devise的原始讨论可以在这里find ,第一个实现的细节可以在这里find 。

千年发展目标已经产生了可以在这里find的testing指导文件的最初骨骼, 这里有一些示例testing 。

这是上面的链接发布testing的一个例子:

  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(); }); }); 

正如Blackcout所说,Velocity 是meteor的官方TDD框架 。 但是目前速度的网页并没有提供很好的文档。 所以我build议你看:

  • 速度背后的概念
  • 一步一步的教程
  • 特别是官方的例子

另一个选项,从0.6.0开始就很容易得到,就是运行你的整个应用程序,使用本地的智能软件包,只有最less量的代码来启动你的应用程序(可能调用一个特定的智能包,这是你的基础应用程序)。

然后,您可以利用meteor的Tinytest,这非常适合testingMeteor应用程序。

我成功地使用了xolvio:黄瓜和速度来做我的testing。 工作得很好,并持续运行,以便您始终可以看到您的testing已通过。

meteor+ TheIntern

不知何故,我设法用TheIntern.jstestingMeteor应用程序。

虽然这是根据我的需要。 但是,我认为这可能会使人们走向正确的方向,我正在分享我所做的解决这个问题的方法。

有一个executefunction,允许我们运行JS代码,我们可以访问浏览器的window对象,因此也Meteor

想知道更多关于执行

这就是我的test suite如何查找functiontesting

 define(function (require) { var registerSuite = require('intern!object'); var assert = require('intern/chai!assert'); registerSuite({ name: 'index', 'greeting form': function () { var rem = this.remote; return this.remote .get(require.toUrl('localhost:3000')) .setFindTimeout(5000) .execute(function() { console.log("browser window object", window) return Products.find({}).fetch().length }) .then(function (text) { console.log(text) assert.strictEqual(text, 2, 'Yes I can access Meteor and its Collections'); }); } }); }); 

要知道更多,这是我的要点

注:我仍然处于这个解决scheme的早期阶段。 我不知道我是否可以用这个来做复杂的testing。 但是我对此非常有信心。

速度还不成熟。 我面临setTimeout问题使用速度。 对于服务器端unit testing,你可以使用这个包 。

速度比速度快。 当我使用logintesting任何规格时,Velocity需要很长的时间。 使用Jasmine代码,我们可以testing任何服务器端方法和发布。