Jasmine AJAX mock 将字符串转为数组
Jasmine AJAX mock turns string into array
我试图围绕我的 AjaxRequest 编写一个测试套件 class,但是当我试图检查请求主体时,我遇到了这个测试失败
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']
吗?
谢谢!
更改 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));
}
};
});
}
这不仅摆脱了额外的库,而且还可以更好地控制何时拒绝请求承诺。
我试图围绕我的 AjaxRequest 编写一个测试套件 class,但是当我试图检查请求主体时,我遇到了这个测试失败
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']
吗?
谢谢!
更改 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));
}
};
});
}
这不仅摆脱了额外的库,而且还可以更好地控制何时拒绝请求承诺。