【问题标题】:How to structure meteor app for testing如何构建流星应用程序进行测试
【发布时间】:2015-11-14 18:22:43
【问题描述】:

我正在阅读在线书籍Meteor Testing,并且有点担心它说您应该如何构建您的应用程序。它说要在名为“App”的全局命名空间中创建一个对象,并根据需要附加子模块,如下所示:

App = {
    Services: {
        func1: [some function]
        func2: [some function]
        ...
    },
    Collections: {
        func1: [some function]
        func2: [some function]
        ...
    }
    ...
}

我的担忧是:

  1. 这会对我的应用程序的安全性产生负面影响吗?
  2. 我应该在何时何地在应用命名空间中定义函数?将它们全部添加到一个地方很快就会让人不知所措。
  3. 我应该对所有我想进行单元测试的函数都这样做吗?如果没有,如何访问我在模板的 javascript 文件范围内定义的函数?

如果你们中的任何人可以向我指出有关流星测试的其他资源,我很想看看其他人的建议。谢谢。

【问题讨论】:

  • 嗨。我是这本书的作者。这章还没写完就泄露了!我将很快发布一个更新,告诉您如何解决第 2 点和第 3 点。第 1 点没有问题,但我会让其他人回答:)
  • 太棒了!感谢您的回复。喜欢这本书,顺便说一句,它很有帮助。我还有另一个不相关的问题,我也发布在了流星测试网站上。我们可以使用“Meteor.stubMethods”了吗?我无法使用它,而且我很确定我拥有最新版本的速度。
  • 对,我还没有更新章节中的 Velocity 助手!我发布了图书更新,忘记屏蔽这一章。哎呀!完成后我会在这里更新。谢谢:)
  • 没问题。期待所有即将到来的章节/更新。
  • 已更新,现在应该可以使用了

标签: node.js testing meteor meteor-velocity


【解决方案1】:

您可以将所有函数的定义分散在不同的文件中,但显然加载顺序很重要。我建议为您的项目创建一个 Meteor 包,该包将定义所有这些函数和所需的其他全局变量,然后是 api.export('App')api.export('App', 'client')(取决于您的需要)。

【讨论】:

  • 这是正确的,创建一个核心包。这一章很快就会说清楚:)
  • @Xolv.io 酷!并感谢您对 Meteor 社区的贡献,Sam!
  • 请注意核心包应该只包含命名空间。服务的实现应该存在于应用程序中(或依赖于核心包的其他包中)。这将为您提供最佳的关注点分离
  • @Xolv.io 因此,以本书为例,您是说UserService.prototype.authenticate 函数的定义应该在包中,而是在应用代码本身?
  • 加载顺序呢?如果我将函数放在/services/user/server/user-service-server.js 中,我如何确保这些函数在我的应用程序的另一部分可用?
猜你喜欢
  • 2014-12-18
  • 2012-06-01
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
  • 2017-05-10
  • 2013-11-24
  • 1970-01-01
  • 2013-03-30
相关资源
最近更新 更多