Mongoose: عملية اختبار الوحدة لا تخرج بسبب المانجوز؟

تم إنشاؤها على ١٦ أكتوبر ٢٠١٧  ·  3تعليقات  ·  مصدر: Automattic/mongoose

مرحبا
4.12.0

أضفت بعض اختبارات Mocha / Chai إلى تطبيق عملي (Express + mangoose) ولاحظت شيئًا لم يكن مرئيًا أثناء تشغيل التطبيق.

القضية
عند إجراء اختبارات الوحدة الخاصة بي ، لا تخرج العملية مطلقًا وتكون عالقة في وضع الخمول بسبب أشجار المانجوز (على ما يبدو).

لا شيء رائع في مقتطف الشفرة أدناه ... لقد جربت بعض النمس # قطع الاتصال في نهاية الاختبار ولكن لا يغير أي شيء ..

هل يمكنك إرشادك بشأن ما الذي يمنع خروج العملية؟

const mongoose = require('mongoose');
import { databaseConfig } from './config/database';

export function setupDatabase() {
  mongoose.Promise = require('bluebird');
  //mongoose.set("debug", true)
  var connection = mongoose.connect(databaseConfig.database, { useMongoClient: true }, (err) => { console.log("Connect error: " + err) });

  mongoose.connection.on('connected', () => {
    console.log('Connected to database ' + databaseConfig.database);
  });

  mongoose.connection.on('error', (err) => {
    console.log('Database error: ' + err);
  });

  return mongoose;
}

التعليق الأكثر فائدة

إن إجبار العملية على الإنهاء هو مجرد حل بديل. تكمن المشكلة في أنه يبدو أنه إذا كان لديك اتصالات متعددة مفتوحة وتستخدم mongoose.disconnect() فإنه لا يزال يترك المقبس مفتوحًا.

ال 3 كومينتر

في كل مرة أستخدم فيها mongoose.connect ، أحصل دائمًا على هذا التحذير

تحذير: تم إهمال open() في النمس> = 4.11.0 ، استخدم openUri() بدلاً من ذلك ، أو اضبط الخيار useMongoClient في حالة استخدام connect() أو createConnection() . راجع http://mongoosejs.com/docs/connections.html#use -mongo-client

الدردشة على العقدة: 8.7 ، النمس: 4.12.2

جرب هذا،

const mongoose = require('mongoose');
mongoose.Promise = require('bluebird');
import { databaseConfig } from './config/database';


async function setupDatabase() {
  // mongoose.set('debug', true);
  return await mongoose.connection.openUri(databaseConfig.database);
}

(async function () {
  const conn = await setupDatabase();
  // closing instance
  await conn.close();
}());



حسنًا ، سيئتي لم يكن هذا خطأ مانجوز.

أنا أستخدم mocha واضطررت إلى إضافة معلمة --exit لفرض استدعاء process.exit.

أعتقد أنه بدون هذه المعلمة mocha فقط ... لا يفعل شيئًا في نهاية الاختبار وينتظر.

إن إجبار العملية على الإنهاء هو مجرد حل بديل. تكمن المشكلة في أنه يبدو أنه إذا كان لديك اتصالات متعددة مفتوحة وتستخدم mongoose.disconnect() فإنه لا يزال يترك المقبس مفتوحًا.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات