【问题标题】:Where should unit tests be placed in Meteor?Meteor 中的单元测试应该放在哪里?
【发布时间】:2012-07-31 22:09:45
【问题描述】:

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

我刚刚开始了我的第一个 Meteor 项目,并开始使用 Mochashould.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 是不错的选择。

标签: unit-testing meteor mocha.js should.js


【解决方案1】:

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

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

具有讽刺意味的是,有人告诉我有 opposite issue 的人希望 Meteor 客户端加载他们的测试。

【讨论】:

【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    将您的测试文件放在tests 文件夹中,您应该没问题。如果您的应用程序有多个文件嵌套在serverclient 文件夹中,您可以在tests/clienttests/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 测试。这些帖子可以进一步帮助您。

      【讨论】:

        猜你喜欢
        • 2014-02-04
        • 2023-04-09
        • 2010-10-23
        • 2011-03-04
        • 2022-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多