Тип ошибки теста в чай
В настоящее время я тестирую свое приложение с 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
,
Любая идея / предложение?
1 ответ
Решение
Вам нужно передать функцию в chai, но ваш код передает результат вызова функции.
Этот код должен исправить вашу проблему:
expect (function() { place.updateAddress ( [] ); }).to.throw ( TypeError );