我想爲我的挖空視圖模型編寫一些qunit單元測試,並且遇到了一個有趣的問題。
以我視圖模型我有以下功能:
Get = function (id) {
return $.ajax({
url: API + "/" + id,
type: 'GET',
dataType: 'json',
timeout: Timeout,
statusCode: {
200: GetOneSuccess,
404: ItemNotFound
},
error: function() {
//Item(null);
}
});
},
在我的單元測試
然後,我有這樣的:
vm.Get(vm.Item().Id()).then(function() {
ok(false, "Failure!");
},function() {
equal(vm.Item(), null, "Item was removed");
start();
});
ItemNotFound如下:
ItemNotFound = function() {
Item(null);
}
這非常簡單,如果API控制器返回「NotFound(Error 404)」,則將Item設置爲null。我發現我的測試如果失敗,因爲當「then」被稱爲ItemNotFound函數尚未完成。
如果我添加一個超時我的單元測試,它的工作原理:
vm.Get(vm.Item().Id()).then(function() {
ok(false, "Failure!");
},function() {
setTimeout(function() {
equal(vm.Item(), null, "Item was removed");
start();
}, 2000);
});
任何人有什麼想法?我應該只是不打擾statusCodes,只處理錯誤處理程序中的所有錯誤類型?看起來不那麼優雅。