2012-08-02 76 views
21

有没有我的测试可以在没有Meteor的情况下运行的地方?单元测试应放在流星的哪个位置?

我刚开始我的第一个流星项目,并开始编写单元测试Mochashould.js。虽然摩卡运行没有问题,但测试可防止Meteor启动,因为它使用节点的require而不是__meteor_bootstrap__.requirefull error message)有问题。

这就是说,流星不应该运行我的测试!根据Meteor documentation,代码只能放在客户端,服务器或两者上。单元测试套件不属于这些类别,我对not the only person错过了Meteor缺乏定位自动化测试的明确位置。

现在,我的测试中都保存在server/test/,裹着块中的每个文件的内容:

if (typeof(Meteor) === 'undefined') { ... } 

虽然这个作品,给人的感觉并不优雅。您是否有任何其他建议用于构建Meteor应用程序的测试?

更新:代替在流星文档明确的指示,我跟着Rails folder conventions(第4款),使用存储在我的测试资产称为test文件夹。我后来将其移至server/test,因为我不希望它在客户端上加载。

+0

这需要升级。我相信流星速度和茉莉花现在是不错的选择。 – 2016-01-07 13:08:03

回答

18

将您的测试放在tests/文件夹中。与Rails不同,Rails为此使用名为test的文件夹,Meteor使用复数tests作为此文件夹名称。

存储在名为“tests”的文件夹中的资产将被Meteor完全忽略;这些资产将不会加载到客户端服务器上。具有讽刺意味的是,我被一个有opposite issue谁希望他们的Meteor客户端加载测试的人告发。

+1

我不知道这种行为是否记录在某处。 – punund 2012-10-04 19:39:03

+5

此问题已记录在官方流星文档的[“结构化您的应用程序”](http://docs.meteor.com/#structuringyourapp)部分。 – Blackcoat 2012-11-23 20:57:36

2

从0.6.0开始,一个有趣的方法是专门为您的应用程序使用本地智能包,可以使用Meteor的tinytest轻松测试。您将拥有智能软件包以外的最低限度代码来引导您的应用程序。

编辑:我已经做了这种方法,我甚至不需要裸露的最低限度的代码在智能包之外。整个应用程序是包。

1

将您的测试文件放在tests文件夹中,你应该没问题。如果您的应用程序使您有多个嵌套在serverclient文件夹中的文件,则可以在tests/clienttests/server目录中复制类似的文件夹结构。不是一个规则,但我认为它有助于维护,并且我有过花费几个小时来调试缺少类错误的经验,这个错误只是通过组织测试文件夹中的文件结构来解决。

1

由于这是2012年的问题,在这里没有单一的综合答案,我想在这里尝试一个。

这是一个good starting point开始考虑测试你的流星项目。

简而言之 第一步:流星新增三条:茉莉 第二步:流星增加速度:HTML-记者

这样做的那一刻,如果你的应用程序运行(或当您启动应用程序恢复运行),在浏览器的右上角 - 打开应用程序的位置打开 - 您将开始看到闪烁的点。而已。你现在已经有了你的测试框架。

现在你可以在这个框架的帮助下生成一个目录结构。当你点击那个闪烁的点时,你会看到如下的弹出窗口。

Velocity Test Status

这对生成的test目录的结构方便的链接。

或者,您可以手动完成,如下所示。 接下来就是决定目录结构。 Meteor Documentation says enough about it. You need to have tests folder in your project root

here开始提示,你可以这样下去。

<projectRoot> 
|---jasmine 
     |---client 
      |--- integration 
         |---- my.first.integration.spec.js 
     |---client 
      |--- unit 
         |---- my.first.unit.spec.js 
|---jasmine 
     |---server 
      |--- integration 
         |---- my.first.integration.spec.js 
     |---server 
      |--- unit 
         |---- my.first.unit.spec.js 

和中提琴,开始写你的茉莉花测试。这些帖子可以进一步帮助你。