我有一个相当简单的函数,它返回一个jQuery .ajax() promise:
CLAW.controls.validateLocation = function(val, $inputEl) {
return $.ajax({
url: locationServiceUrl + 'ValidateLocation/',
data: {
'locationName': val
},
beforeSend: function() {
$inputEl.addClass('busy');
}
}).done(function(result) {
// some success clauses
}).fail(function(result) {
// some failure clauses
}).always(function() {
// some always clauses
});
}
在大多数情况下,这个新的promises接口就像一个梦一样工作,并且在使用jQuery的.ajax()时消除回调金字塔是很棒的。然而,我无论如何也想不出如何使用Jasmine和/或Sinon来正确地测试这些承诺:
done
、fail
和always
子句在ajax函数中不再存在,所以承诺永远不会解决并抛出错误,而是使用我真的很喜欢用前面提到的测试库测试这些新的jQuery .ajax()承诺的一两个例子。我已经相当强烈地搜索了网络,但没有真正挖掘出任何关于这样做的东西。我找到的一个资源提到了使用Jasmine.ajax,但如果可能的话,我想避免这种情况,因为Sinon提供了大多数开箱即用的功能。
https://stackoverflow.com/questions/13148356
复制相似问题