Жасмин AJAX макет превращает строку в массив
Я пытаюсь написать набор тестов для своего класса 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();
И вот run()
метод, в котором сделан запрос ajax
var options = {
url: this._url,
method: this._method,
type: 'json',
data: this._body
};
return when(reqwest(options));
Я использую reqwest для выдачи запросов AJAX.
Может ли кто-то указать, почему он ожидает ['text']
когда запрос отправлен 'text'
в теле json?
Спасибо!
1 ответ
Решение
Изменение реализации 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));
}
};
});
}
Это не только избавляет от лишней библиотеки, но и оставляет больше контроля над тем, когда отклонять обещание запроса.