Вам нужно на самом деле выдать исключение, чтобы ваш тест обнаружил его. Если вы хотите, чтобы ваше приложение генерировало исключение, когда username равно null, просто поместите пустую проверку в вашем конструкторе для любых значений, которые вы хотите проверить, например:
constructor({username, description, photo}) {
if(!username) {
throw 'Error: Username must not be undefined';
}
this.username = username;
this.description = description;
this.photo = photo;
}
Я бы также предложил создать объект домена пользователя и передать это, а не объект карты. в дальнейшем это будет более пригодно для повторного использования и будет намного лучше практиковаться
class User {
constructor(username) {
if(!username) {
throw 'Error: Username must not be undefined'; // put your validation here, now any places with user will throw the error!
}
}
}
Положить валидацию в класс User - это хорошая практика, поскольку она следует принципу высокая когезия , что означает что каждый класс специфицируется c и обрабатывает свою собственную логику / проверку независимо.
Наконец, я бы предложил сделать ваш тест немного более точным, проверив наличие сообщения об исключении и наличия. Это очень полезно в сценарии ios, где сообщение имеет большое значение для пользователей или других областей приложения:
test('post must have a username', () => {
try {
new Post({description: 'a', photo: 'photo.jpg'}))
fail('No exception thrown with null username!')
} catch(e) {
expect(e.getMessage()).toEqual(expected message.....)
}
});