我目前正在使用chai
. 我想测试我的一种方法引发的错误。为此,我编写了这个测试:
expect ( place.updateAddress ( [] ) ).to.throw ( TypeError );
这是方法:
Place.prototype.updateAddress = function ( address ) {
var self = this;
if ( ! utils.type.isObject ( address ) ) {
throw new TypeError (
'Expect the parameter to be a JSON Object, ' +
$.type ( address ) + ' provided.'
);
}
for ( var key in address ) if ( address.hasOwnProperty ( key ) ) {
self.attributes.address[key] = address[key];
}
return self;
};
问题是chai
测试失败,因为它的方法抛出了TypeError
...。这不应该失败,因为这是预期的行为。这是声明:
我通过以下测试绕过了这个问题:
try {
place.updateAddress ( [] );
} catch ( err ) {
expect ( err ).to.be.an.instanceof ( TypeError );
}
但我更喜欢try... catch
在我的测试中避免使用语句,因为chai
它提供了像throw
.
有什么想法/建议吗?