Javascript中的捕获请求负载
我正在测试的web应用程序正在进行http调用。我正在尝试设置一个Qunit测试来验证这些调用。我需要能够验证HTTP POST调用的请求负载中的数据。我已经可以自己捕获调用,但是我没有访问该调用的请求负载的权限 以下是我目前掌握的情况:Javascript中的捕获请求负载,javascript,http,xmlhttprequest,google-chrome-devtools,qunit,Javascript,Http,Xmlhttprequest,Google Chrome Devtools,Qunit,我正在测试的web应用程序正在进行http调用。我正在尝试设置一个Qunit测试来验证这些调用。我需要能够验证HTTP POST调用的请求负载中的数据。我已经可以自己捕获调用,但是我没有访问该调用的请求负载的权限 以下是我目前掌握的情况: XMLHttpRequest.prototype._originalOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function(method, url, asyn
XMLHttpRequest.prototype._originalOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(method, url, async, user, password) {
if(url.match(/get/)) {
QUnit.asyncTest("Validate URL", function( assert ) {
assert.equal( url.match(my_regex)[0] , expected_url, "Matches");
// assert.equal( /*Validate Request Payload*/);
start();
});
}
this._originalOpen(method, url, async, user, password);
}
有没有办法在Javascript中捕获调用的请求负载?您需要像打开一样克隆send()方法,然后检查参数:
var clone = window.XMLHttpRequest.prototype.send;
window.XMLHttpRequest.prototype.send = function() {
// console.log(arguments);
// Continue the send
clone.apply(this, arguments);
};
虽然我对您自己做这件事的努力表示赞赏,但为什么不使用像or这样的工具呢?我实际上并不拥有我正在测试的应用程序。我可以在测试中使用这些工具而不修改原始应用程序吗?是的。您在测试文件中设置了所有内容。Mockjax工具仅用于jQuery ajax调用,但Sinon将在模拟核心
XMLHttpRequest
对象时使用任何代码库。您可以轻松地分析/验证请求对象的内容。看一看例子