我正在测试的网络应用正在进行http调用。我正在尝试设置Qunit测试以验证这些调用。我需要能够验证HTTP POST调用的请求有效负载中的数据。我已经可以捕获自己的呼叫,但我无法访问该呼叫的请求有效负载。
这是我到目前为止所拥有的:
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中捕获调用的请求有效负载?
答案 0 :(得分:1)
您需要像打开一样克隆send()方法,然后检查参数:
var clone = window.XMLHttpRequest.prototype.send;
window.XMLHttpRequest.prototype.send = function() {
// console.log(arguments);
// Continue the send
clone.apply(this, arguments);
};