Я новичок в модульном тестировании в Мокке / Чай и застрял в этой проблеме. У меня есть POST для регистрации нового пользователя. В этом посте я проверяю, есть ли пользователь в базе данных.
if(error) return res.status(400).send(error.details[0].message);
console.log('check this ' + req.body.email);
//console.log(`Connected to ${db}...`)
console.log(`Connected to ${User.db.mongoose}...`)
let user = await User.findOne({ email: req.body.email});
console.log(user);
if(user) return res.status(400).send('User already registered');
То, что я обнаружил в первом тесте, зарегистрирует пользователя (вставит информацию в БД). Я обнаружил, что второй тест не пройден.
it('Should reject duplicate new user', async() => {
const res = await request(server)
.post('/api/users/')
.send({firstname: sFirstName, lastname: sLastName, email: sEmail, password: sPassword});
expect(res.status).to.be.equal(400);
expect(res.error).to.be.equal('User already registered');
});
Причина сбоя заключается в том, что строка соединения, в которой не выполняется запрос, не возвращает никаких записей. Итак, я протестировал запрос в Postman и POST API работает как положено. Мне любопытно, если кто-нибудь знает, почему запрос mongoose не будет работать, когда я запускаю тест в Mocha, а работает, когда я соединяюсь через почтальона. Любые мысли будут оценены.
const {User, validate} = require('../models/user');
module.exports = function() {
//Database connection
const db = config.get('db');
mongoose.connect(db,{ useNewUrlParser: true })
.then(() => console.log(`Connected to ${db}...`))
.catch(err => console.error(`Could not connect to ${db}...`, err));
}