0
我試圖用QUnit在依賴服務中單元測試期望的javascript異常。如何使用QUnit測試javascript錯誤恢復
下面的塊是被測試的代碼。它是使用WinJS承諾的TypeScript。構造函數接受一個_dataLayer和_errorService作爲依賴關係。如果_dataLayer引發特定異常,則測試中的代碼將嘗試從錯誤中恢復。
module Services {
export class MyService {
constructor(private _dataLayer, private _errorService) {
}
private _items: any[];
getItems() {
var promise = this._dataLayer.getItems()
.then((items) => {
this._items = items;
return this._items;
})
.then(null, (error) => {
if (error.status === 404) {
// tolerate this error and recover
this._items = [];
return this._items;
}
// Display an error message
this._errorService.handleError(error);
});
return promise;
}
}
}
以下單元測試嘗試證明待測代碼可以從預期異常中恢復。
QUnit.test("getItems handles _dataLayer.getItems HTTP 404", function (assert) {
// arrange
var done = assert.async();
var _dataLayer = {
getItems: function() {
throw { status: 404 };
}
};
var svc = new Services.MyService(_dataLayer, null);
// act
svc.getItems().then(function (items) {
// assert
assert.strictEqual(items.length, 0);
done();
});
});
下測試的代碼正確地從錯誤中恢復,我只是不能證明與QUnit。當測試運行時,看起來QUnit僅僅因爲拋出異常而無法通過測試,無論它如何處理。
我不測試是否引發錯誤。測試是爲了證明我們成功處理的拋出錯誤。
有沒有辦法構建QUnit測試,以便測試中的代碼將通過HTTP 404測試?