У меня есть следующий inputModel:функция Прототип перекрываться другой «класс»
var UserCreateInputModel = function(req) {
...
this.password = req.body.password;
this.repeatPassword = req.body.repeatPassword;
...
console.log(this.password !== this.repeatPassword);
this.validate();
};
UserCreateInputModel.prototype = InputModel;
UserCreateInputModel.prototype.validate = function() {
console.log('Validating...');
if(this.password !== this.repeatPassword) throw new Error('Passwords are not equal!');
};
module.exports = UserCreateInputModel;
В моем тесте я хотел бы проверить, если было сгенерировано исключение (с помощью модуля Assert узла):
//Act
assert.throws(function() {
new UserCreateInputModel(req);
}, Error);
Как-то исключение просто не бросали. Мой консольный вывод из конструктора «это». На консоли я не вижу выход «Validating».
Я предполагаю, что это какой-то JavaScript ловушкой или что-то подобное (об этом), но я просто не получаю сообщение об ошибке ...
Update У меня есть еще один inputModel в другом файле. Это «наследует» от InputModel
тоже. Таким образом, кажется, что UserCreateInputModel.prototype.validate
переопределяется в другой inputModel. До сих пор не понимаю ...
Если 'InputModel' является конструктором, вы забыли' .prototype' внутри 'Object.create'. Удобство 'util.inherits' делает это для вас плюс устанавливает' 'конструктор'' должным образом. –
@herby Я приостанавливаю недоверие и предполагаю, что OP получил его в основном правильно и просто ушел из 'Object.create()'. Вполне возможно, что 'InputModel' сам по себе является прототипом, который OP хочет использовать – JLRishe
Hm. Именование предлагает иначе, но только ОП знает наверняка. В моем пессимизме я даже представляю даже худший сценарий: этот страшный «шаблон» «SubClass.prototype = новый SuperClass();», также может быть, что «InputModel» - такой полномасштабный экземпляр. : - \ Но может быть и то, что я здесь слишком пессимистичен. –