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测试?