Meteor 中的单元测试应该放在哪里?
Posted
技术标签:
【中文标题】Meteor 中的单元测试应该放在哪里?【英文标题】:Where should unit tests be placed in Meteor? 【发布时间】:2012-07-31 22:09:45 【问题描述】:有没有一个地方可以让我的测试不被 Meteor 运行?
我刚刚开始了我的第一个 Meteor 项目,并开始使用 Mocha 和 should.js 编写单元测试。虽然 mocha 运行没有问题,但测试阻止 Meteor 启动,因为它使用节点的 require
而不是 __meteor_bootstrap__.require
(full error message) 存在问题。
话虽如此,Meteor 不应该运行我的测试! 根据Meteor documentation,代码只能放在客户端、服务器或两者上。单元测试套件不属于这些类别,我 not the only person 对 Meteor 缺乏用于放置自动化测试的明确位置感到困惑。
现在,我的测试保存在server/test/
,每个文件的内容都包含在块中:
if (typeof(Meteor) === 'undefined') ...
虽然这可行,但感觉并不优雅。对于使用 Meteor 应用程序构建测试,您还有其他建议吗?
更新: 代替 Meteor 文档中的明确说明,我遵循 Rails folder conventions(第 4 段),使用名为 test
的文件夹来存储我的测试资产。后来我把它移到了server/test
,因为我不想把它加载到客户端上。
【问题讨论】:
这需要升级。我相信现在 Meteor Velocity 和 Jasmine 是不错的选择。 【参考方案1】:将您的测试放在tests/
文件夹中。与 Rails 使用一个名为 test
的文件夹来实现此目的不同,Meteor 使用复数 tests
作为该文件夹名称。
存储在名为“tests”的文件夹中的资产将被 Meteor 完全忽略;这些资产不会加载到客户端或服务器上。
具有讽刺意味的是,有人告诉我有 opposite issue 的人希望 Meteor 客户端加载他们的测试。
【讨论】:
这个问题已经被记录在官方流星文档的"Structuring Your App"部分。【参考方案2】:从 0.6.0 开始,一个有趣的方法是为您的应用专门使用本地智能包,可以使用 Meteor 的 tinytest 轻松测试。您将拥有位于智能包之外的最少代码来引导您的应用程序。
编辑:我已经完成了这种方法,我什至不需要驻留在智能包之外的最低限度的代码。整个应用都是包。
【讨论】:
【参考方案3】:将您的测试文件放在tests
文件夹中,您应该没问题。如果您的应用程序有多个文件嵌套在server
或client
文件夹中,您可以在tests/client
或tests/server
目录中复制类似的文件夹结构。不是规则,但我认为它有助于维护,并且我有过花费数小时调试丢失类错误的经验,该错误只需通过在测试文件夹中组织文件结构来解决。
【讨论】:
【参考方案4】:由于这是 2012 年的问题,这里没有一个全面的答案,我想在这里尝试一个。
这是一个good starting point,用于开始考虑测试您的流星项目。
简而言之 Step1:流星添加三条:茉莉 Step2:meteor 添加velocity:html-reporter
当您执行此操作时,如果您的应用程序正在运行(或每当您重新启动应用程序时),在浏览器的右上角(您打开应用程序的位置),您将开始看到一个闪烁的点。而已。您现在已经有了测试框架。
现在您也可以借助此框架实际生成目录结构。当您点击那个闪烁的点时,您将看到如下所示的弹出窗口。
这有用于生成测试目录结构的便捷链接。
或者,您可以手动执行以下操作。 接下来是决定目录结构。 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
还有 Viola,开始编写你的 jasmine 测试。这些帖子可以进一步帮助您。
Post1 Jasmine Documentation This is another good tutorial【讨论】:
以上是关于Meteor 中的单元测试应该放在哪里?的主要内容,如果未能解决你的问题,请参考以下文章