Тип ошибки теста в чай

В настоящее время я тестирую свое приложение с 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 );
Другие вопросы по тегам