#javascript #node.js #async-await #mocha.js #supertest
Вопрос:
Я использую supertest, чай и мокко для запуска api-тестирования. У меня есть следующий код:
- app.js
app.get('/post', async (req, res, next) => {
await postModel.find();
console.log("co xuong duoi la duoc");
res.json({loi: "hi"}).status(200)
// postModel.find(() => res.json({loi: "hi"}).status(200));
//;
})
- test.js
describe('GET /post', () => {
before(() => {
db.connect()
// .then(() => done())
// .catch((err) => done(err));
})
it('OK nha', (done) => {
request(app).get('/post').then((res) => {
const body = res.body;
console.log(body);
expect(body).to.deep.property('loi');
done();
})
.catch(error => done(error));
})
})
Когда я запускал тест npm, код был заблокирован в строке wait PostModel.find(). Затем терминал показал: «Для асинхронных тестов и подключений убедитесь, что вызывается «done ()»; если возвращается обещание, убедитесь, что оно выполнено».
Но если я прокомментирую эту строку: //ожидание PostModel.find(). Это сработало.
Строка: console.log(тело) была запущена.
Пожалуйста, помогите мне с этой проблемой. Извините за мой английский.
Комментарии:
1. Что есть
postModel
и чтоpostModel.find()
возвращается?2. Я нашел ошибку. Не удалось подключиться к Mongodb. Я все исправил. Спасибо 😀
postModel
-это модель, созданная по схеме Post3. Конечно, но вы не опубликовали никакого кода этого — вы даже не пометили вопрос [mongodb].
4. Потому что я не думаю, что ошибка связана с mongodb, и у меня есть только 5 тегов.
Ответ №1:
Попробуйте решить свои проблемы со следующими факторами
- Если вы используете удаленное или локальное подключение mongodb, пожалуйста, убедитесь, что все они запущены и работают. Если он удаленный, то для установки соединения потребуется некоторое время. Потому что тайм-аут Мокко по умолчанию составляет всего 5 секунд для тестовых случаев. Это приводит к ошибке отклонения необработанного обещания, а затем эта ошибка может быть показана вам.
- Создайте простой
await setTimeout(dummyPostData, 5000)
код службы API и обратите внимание, проходит тестовый случай или нет.
Наконец, пожалуйста, обновите свой вопрос, получили ли вы какую-либо ошибку подключения к БД или какое-либо исключение, связанное с таймаутом. Так что это поможет нам устранить неполадки.
Комментарии:
1. Я нашел ошибку. Не удалось подключиться к Mongodb. Я все исправил. Спасибо 😀