测试 Webhooks 的正确方法是什么?
What is the correct way to test 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 消息吗?
我用Mocha (although you can use other testing frameworks as Jasmine)。
我将测试与允许您执行 HTTP 请求的 superagent 库相结合。
接下来的部分就是这样:设置一个日志并存储从 Mandril 或您接收的其他挂钩接收到的 JSON,并构建传入响应的库(或夹具)。
然后您可以构建您需要的不同案例,例如:
- 删除预期的字段
- 发送重复项
- 以此类推
要使此方法保持一致,您需要花时间思考您希望收到哪些钩子,阅读文档以评估您正在考虑的情况是否可行等等。
我建议您保留收到的钩子的日志,以不断改进您的测试。
我在 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 消息吗?
我用Mocha (although you can use other testing frameworks as Jasmine)。
我将测试与允许您执行 HTTP 请求的 superagent 库相结合。
接下来的部分就是这样:设置一个日志并存储从 Mandril 或您接收的其他挂钩接收到的 JSON,并构建传入响应的库(或夹具)。
然后您可以构建您需要的不同案例,例如:
- 删除预期的字段
- 发送重复项
- 以此类推
要使此方法保持一致,您需要花时间思考您希望收到哪些钩子,阅读文档以评估您正在考虑的情况是否可行等等。
我建议您保留收到的钩子的日志,以不断改进您的测试。