测试Webhooks的正确方法是什么?

时间:2015-05-28 13:41:25

标签: node.js meteor webhooks

我在Meteor中有一个ReSTFul API。我使用Mandrill,Stripe和其他库中的钩子来更新集合。

Router.route('/mandrill/message_rejected', { where: 'server' })
  .post(function () {
    var request = EJSON.parse(this.request.body.mandrill_events);

    var rejects = _.map(_.where(request, {
      event: 'reject'
    }, {
      return object.msg.email;
    });

    Meteor.users.update({
      emails: {
        $elemMatch: {
          "address": {
            $in: rejects
          }
        }
      }
    }, {
      $set: { status: 'rejected' }
    });

    this.response.end();
  });

我的问题是;我该如何自动化测试呢?该请求应该来自Mandrill。有没有办法以一致的方式测试webhook消息?

1 个答案:

答案 0 :(得分:5)

我使用Mocha(尽管您可以使用其他测试框架作为Jasmine)。

我将测试与允许您执行HTTP请求的superagent库结合使用。

下一部分可以解决这个问题:设置一个日志并存储从Mandril收到的JSON或你收到的其他钩子,并建立一个传入响应的库(或夹具)。

然后,您可以构建所需的不同案例,例如:

  • 删除预期字段
  • 发送重复项
  • 等等

使这种方法保持一致需要您花时间考虑您希望接收的钩子,阅读文档以评估您正在考虑的案例是否不可能等等。

我建议你保留收到的钩子的日志,以便随着时间的推移改进测试。