Я хочу написать несколько тестов для метода, который читает из файла JSON (имитирует БД) и возвращает правильное имя, если оно существует.
Это код, который я написал для моего метода. Выдает ошибку, когда идентификатор недействителен.
const getOne = (id, callback) => {
...
fs.readFile('db.json', (err, data) => {
if (err) {
throw new Error('Error reading file');
}
const person = JSON.parse(data)
.filter(el => el.id === id)
.map(el => el.name);
if (person.length === 0) {
throw new Error('It does not match DB entry');
}
callback(person);
});
...
Тест, который я написал:
it('Should reject an invalid id', (done) => {
api.getOne(100, (person) => {
try {
personFromDB = person;
} catch (error) {
assert.throws(() => {
}, new Error('It does not match DB entry'));
//done();
}
Но, похоже, он не прошел тест. Когда я не комментирую «done ()», он проходит тест, но я не думаю, что это потому, что я проходил реальный тест, а скорее потому, что тест попадает в catch и выполняет обратный вызов done ().
Любая помощь, руководство или рекомендация очень ценится.