Tôi đã có một chức năng khá đơn giản mà trả về một .ajax jQuery() hứa hẹn như vậy:Làm thế nào để kiểm tra đơn vị đúng cách .jax() hứa hẹn sử dụng Jasmine và/hoặc Sinon?
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
});
}
Đối với hầu hết các phần, giao diện lời hứa mới này hoạt động giống như một giấc mơ, và loại bỏ kim tự tháp callback khi sử dụng jQuery .ajax() là rất tốt. Tuy nhiên, tôi không thể cho cuộc đời của tôi tìm ra cách để kiểm tra đúng những lời hứa sử dụng Jasmine và/hoặc Sinon:
Tất cả các tài liệu Sinon của giả sử bạn đang sử dụng cũ-trường callbacks; Tôi không thấy một ví dụ duy nhất làm thế nào để sử dụng nó với lời hứa/deferreds
Khi cố gắng sử dụng một Jasmine hoặc Sinon do thám để do thám $ .ajax, các gián điệp là một cách hiệu quả ghi đè lên các lời hứa, vì vậy nó
done
,fail
, vàalways
khoản không còn tồn tại trên chức năng ajax, vì vậy lời hứa không bao giờ giải quyết và tung một lỗi thay vì
tôi thực sự chỉ yêu một hai làm thế nào để thử nghiệm những jQuery mới ví dụ hoặc .ajax() hứa hẹn với các libs kiểm tra nói trên. Tôi đã cọ xát 'mạng khá mãnh liệt và chưa thực sự nạo vét bất cứ điều gì khi làm như vậy. Một trong những tài nguyên tôi đã tìm thấy đề cập đến bằng cách sử dụng Jasmine.ajax, nhưng tôi muốn tránh rằng nếu có thể, nhìn thấy như Sinon cung cấp hầu hết các khả năng tương tự out-of-the-box.
này làm việc tuyệt vời; Cảm ơn nhiều! –
Không có vấn đề, một niềm vui;) – ggozad
Bất kỳ ý tưởng cho cách Sinon? – lucke84