21

有没有一个地方可以让我的测试不被 Meteor 运行?

我刚刚开始了我的第一个 Meteor 项目,并开始使用Mochashould.js编写单元测试。虽然 mocha 运行没有问题,但测试阻止 Meteor 启动,因为它使用节点require 而不是__meteor_bootstrap__.require完整的错误消息)存在问题。

话虽如此,Meteor 不应该运行我的测试!根据Meteor 文档,代码只能放在客户端、服务器或两者上。单元测试套件不属于这些类别,而且我不是唯一一个因 Meteor 缺乏用于放置自动化测试的明确位置而感到困惑的人。

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

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

虽然这有效,但感觉并不优雅。对于使用 Meteor 应用程序构建测试,您还有其他建议吗?

更新:代替 Meteor 文档中的明确说明,我遵循Rails 文件夹约定(第 4 段),使用称为test存储我的测试资产的文件夹。后来我把它移到了,server/test因为我不想把它加载到客户端上。

4

4 回答 4

18

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

Meteor 将完全忽略存储在名为“tests”的文件夹中的资产;这些资产不会加载到客户端服务器上。

具有讽刺意味的是,有人向我提供了相反的问题,他们希望 Meteor 客户端加载他们的测试。

于 2012-08-05T19:36:24.090 回答
2

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

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

于 2013-05-07T11:58:14.273 回答
1

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

于 2015-11-01T19:05:57.910 回答
1

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

这是开始考虑测试您的流星项目的一个很好的起点。

简而言之 Step1:meteor add sanjo:jasmine Step2:meteor add velocity:html-reporter

执行此操作的那一刻,如果您的应用程序正在运行(或者每当您重新启动应用程序时),在浏览器的右上角(您打开应用程序的位置已打开),您将开始看到一个闪烁的点。就是这样。你现在已经有了你的测试框架。

现在,您实际上也可以借助此框架生成目录结构。单击那个闪烁的点的那一刻,您将看到如下所示的弹出窗口。

速度测试状态

这有用于生成测试目录结构的便捷链接。

或者,您可以手动进行如下操作。接下来是决定目录结构。Meteor Documentation 说得够多了。您需要在项目根目录中有测试文件夹

这里得到提示,你可以这样走。

<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

还有 Viola,开始编写你的 jasmine 测试。这些帖子可以进一步帮助你。

于 2016-01-07T13:24:24.380 回答