我正在尝试围绕我的AjaxRequest类编写测试套件,但是当我试图检查请求体时,我得到了这个测试失败
FAILED TESTS:
AjaxRequest
#POST
✖ attaches the body to the response
PhantomJS 1.9.8 (Mac OS X 0.0.0)
Expected Object({ example: [ 'text' ] }) to equal Object({ example: 'text' }).
以下是单元测试的相关部分:
req = new AjaxRequest().post('http://example.com')
.body({
example: 'text'
}).run();
这是发出ajax请求的run()
方法
var options = {
url: this._url,
method: this._method,
type: 'json',
data: this._body
};
return when(reqwest(options));
我正在使用reqwest发出ajax请求。
有人可以指出为什么当请求在json正文中发送['text']
时它会期待'text'
吗?
谢谢!
答案 0 :(得分:0)
更改AjaxRequest的实现解决了这个问题。
以下是使用run
XMLHttpRequest
的新实施
run () {
var req = new XMLHttpRequest();
req.open(this._method, this._url, true);
req.send(JSON.stringify(this._body));
return when.promise((resolve, reject) => {
req.onload = function() {
if (req.status < 400) {
var param = req.response;
try { param = JSON.parse(param) } catch (e) { };
resolve(param);
} else {
reject(new RequestError(req.statusText, req.status));
}
};
});
}
这不仅可以摆脱额外的库,还可以更好地控制何时拒绝请求承诺。