Иногда возникает проблема «чтения ECONNRESET» в Node.js и MongoDB при тестировании - PullRequest
0 голосов
/ 28 января 2020

Я тестирую свое приложение Node.js с помощью Jest и Supertest. У меня есть несколько тестов, но только 2 из них проваливаются иногда с сообщением "read ECONNRESET" . Я не нашел какой-либо постоянной схемы в сбоях, потому что иногда они оба терпят неудачу, иногда другой терпит неудачу, а иногда они оба проходят.

Моя база данных - MongoDB.

Это тест 1., который иногда не проходит:

test('user cannot upload image without token', async (done) => {

      await api
      .patch(`/api/users/${authenticatedUser.id}/picture/add`)
      .attach('image', path.join(__dirname, 'test-image.jpg'))
      .expect(401)
      .expect('Content-Type', /application\/json/)

      const user = await User.findOne({_id: authenticatedUser.id})
      expect(user.image).toBeFalsy()

      done()
  })

Это 2. тест, который иногда не проходит:

test('user cannot upload image with invalid token', async (done) => {

      await api
      .patch(`/api/users/${authenticatedUser.id}/picture/add`)
      .attach('image', path.join(__dirname, 'test-image.jpg'))
      .set('Authorization', `bearer ${helper.invalidToken}`)
      .expect(401)
      .expect('Content-Type', /application\/json/)

      const user = await User.findOne({_id: authenticatedUser.id})
      expect(user.image).toBeFalsy()

      done()
  })

Одна из общих черт этих двух тестов заключается в том, что они оба выдают следующее предупреждение при индивидуальном тестировании:

  ●  Cannot log after tests are done. Did you forget to wait for something async in your test?
Attempted to log "connected to MongoDB".

  17 | mongoose.connect(config.MONGODB_URI, { useNewUrlParser: true, useCreateIndex: true, useFindAndModify: false, useUnifiedTopology: true })
  18 |   .then(() => {
> 19 |     console.log('connected to MongoDB')
     |             ^
  20 |   })
  21 |   .catch((error) => {
  22 |     console.log('error connection to MongoDB:', error.message)

  at BufferedConsole.log (node_modules/@jest/console/build/BufferedConsole.js:199:10)
  at mongoose.connect.then (app.js:19:13)

Но это предупреждение выдается также, когда эти тесты иногда пройти, и с другими тестами при индивидуальном тестировании. Может быть, это как-то связано с этим ECONNRESET, а может и нет ...

Буду очень признателен за несколько советов, как исправить эту маленькую, но раздражающую проблему. Заранее спасибо!

Полный тестовый файл и весь проект можно найти: здесь, на GitHub

...