【问题标题】:How do you return from a Meteor.methods stub in Cucumber你如何从 Cucumber 中的 Meteor.methods 存根返回
【发布时间】:2015-11-17 15:28:37
【问题描述】:

我刚刚开始使用 Cucumber (xolvio:cucumber@0.20.2_1) 和 Meteor 来测试我的项目,我很难从我在步骤定义中创建的 Meteor.methods 存根返回值。

注册用户.js

this.When(/^he clicks the verification link in his email$/, function () {
        console.log(this.server.call('_getUser'));
});

registration.js

Meteor.methods({
    _getUser: function() {
        return Meteor.users.findOne({'emails.address': 'anyemail@email.com'});
});

日志输出一个看起来像系统状态的巨大对象。我注意到其他地方有人建议

this.server.call('aMethod').then(function(response) {

    // you can use the response here

});

但是当我在我的项目中这样做时,黄瓜会记录 Object [object Object] has no method 'then'

我还在步骤定义中尝试了Meteor.users.findOne({'emails.address': anemail@email.com});,但收到错误Meteor is not defined

任何帮助或指导将不胜感激。

编辑 我意识到当我记录一个巨大的对象时,这是因为 Meteor 方法_getUser 没有返回任何东西。然后我尝试了Meteor.users.find({}).fetch(),它返回了一个空数组,即使我的流星黄瓜集合有我的用户,这是我遇到的另一个问题。

【问题讨论】:

  • 昨晚深夜我正在解决这个完全相同的问题(测试验证链接)。首先,从最近的一些版本开始,黄瓜不再返回 promises,这就是 .then() 不再起作用的原因。 xolvio 说我们应该使用browser.executeAsync() 来触发服务器方法。有讨论here。我还没有想出正确的方法来做到这一点,所以我期待有人详细回答。
  • 有趣。我想我可以排除那个解决方案。谢谢。根据这篇文章:joshowens.me/cucumber-js-and-meteor-the-why-and-how-of-it 对数据库进行检查和断言是不好的,因为端到端测试是从用户的角度来看的。他们没有知识,也不应该了解数据库。这种类型的测试最好通过集成或单元测试来解决。

标签: meteor cucumber meteor-velocity


【解决方案1】:

你不需要使用thisthen,最新版本的Chimp是同步的,所以你这样做:

var user = server.call('_getUser')

请务必将 registration.js 作为 Meteor 应用程序的一部分,而不是测试代码库的一部分。

【讨论】:

  • 所以如果我们需要黄瓜的服务器装置,我们需要用它们污染实际的应用程序吗?想必我们至少可以根据应用运行的环境来保护它们吧?
  • 虽然我想我可以将服务器装置放在仅调试测试包中。
  • 是的,一个带有debugOnly的fixture包是可行的,你也可以把你想复制的文件放到/tests/cucumber/fixtures/my-fixture.js下的Meteor应用程序中
  • 我将此标记为答案,因为我的方法一直在同步运行,它只是找不到我的用户,所以它给了我一个奇怪的结果。我的registration.js 是测试代码库的一部分,位于/tests/cucumber/fixtures/registration.js。我还没有使用类似的方法重建我的应用程序,所以我无法测试那些特定的方法,不得不自己构建以进行端到端测试。为什么我的灯具文件夹会被复制到我的 Meteor 应用程序中?
  • 这就是 xolvio:cucumber 的工作原理 :) 您放在 /fixtures 文件夹中的任何内容都只会复制到镜像中,而不是主应用程序。我根本不会使用这个文件夹,而是使用这样的夹具包模式:meteor-testing.readme.io/docs/data-fixtures
猜你喜欢
  • 2023-04-09
  • 2018-06-23
  • 2013-07-01
  • 1970-01-01
  • 2012-08-27
  • 2015-07-25
  • 1970-01-01
  • 2015-11-28
  • 1970-01-01
相关资源
最近更新 更多