Quitit 테스트를 구성하여 ajax 포스트 콜을 테스트하려고합니다. 나는 전화를 조롱하기 위해 mockajax를 사용하고 있습니다. 그러나 비동기 호출을 사용할 수있는 테스트를 얻을 수 없습니다.mockajax로 Qunit ajax 비동기 호출
source.js :
가 여기 내 소스 코드
ajaxFunc = function(element){
$.post({
type:'POST',
url: '/temp/',
dataType:'json',
success: function(data){
element.text("changed in func");
},
error: function(data){
//do something
},
timeout: 60000
});
}
syncFun = function(element){
element.text("changed in func");
}
여기 내 테스트 코드입니다 :
tests2.js
function mockSuccess(){
$.mockjax({
url: "/temp/",
responseText: { success: true }
});
}
QUnit.test("test ajax async", function(assert) {
mockSuccess();
var done = assert.async();
var element = document.createElement("div");
ajaxFunc($(element));
$(element).text("old");
setTimeout(function() {
assert.strictEqual($(element).text(), 'changed in func');
done();
});
});
QUnit.test("test sync", function(assert) {
var element = document.createElement("div");
$(element).text("old");
syncFun($(element));
assert.strictEqual($(element).text(), 'changed in func');
});
실패 첫 번째 테스트는, 두 번째 것은 성공합니다. 성공 콜백 내에서 source.js에 주석을 달면 실제로 게시물이 성공하고 요소 텍스트가 변경되는 것을 볼 수 있습니다.
즉, 게시물의 결과를 테스트하는 것 외에는 모든 것이 올바르게 작동합니다.
나는 https://qunitjs.com/cookbook/을보고 행운을 빌어 오버플로 스택 예제를 보았다. 나는 예 qunit의 GitHub의에서이 같은 보았다
QUnit.test("test ajax async", function(assert) {
mockSuccess();
var done = assert.async();
var element = document.createElement("div");
ajaxFunc($(element));
$(element).text("old");
setTimeout(function() {
assert.strictEqual($(element).text(), 'changed in func');
done();
}, 800);
// ^^^
});
, 그래서 나는이 올바른 것 같아요 : 그냥 작업을 비동기 호출을 얻을 수 밀리 초 수를 추가 할 필요가 같은