¿Cuál es la mejor manera de implementar una base de datos y un servidor diferentes para cada prueba en su conjunto de pruebas?

Realmente, la mejor manera es no hacer que las pruebas unitarias se comuniquen con una base de datos real.

Burlarse de eso. Por ejemplo, MongoDB tiene una interfaz simulada en Node. [1] Lo más probable es que lo haga.

O refactorizar para que el código que está probando no acceda a la base de datos.

Idealmente, no desea que sus pruebas verifiquen que la base de datos funciona como se espera, ¿verdad? Para eso es su suite de pruebas.

Si está creando pruebas funcionales de aspectos más complejos de su aplicación, puede crear nombres de bases de datos personalizados para cada prueba, como se sugirió en otra parte. Pero aún mejor sería escribir pruebas que simplemente no interactúen directamente: si cada prueba se refiere a usuarios y productos distintos, por ejemplo, entonces no deberían interferir entre sí.

Si lo hacen, entonces tienes problemas más profundos.

Notas al pie

[1] mongo-mock

Si bien podría activar un servidor de base de datos en Docker, su conjunto de pruebas tardaría mucho, mucho tiempo en ejecutarse.

A menos que tenga una clara necesidad de este tipo de cosas, simplemente cree una nueva base de datos en el mismo servidor, simplemente soltando el db y ejecutando su DDL nuevamente.

Incluso ese tipo de apesta, por supuesto, ya que sus pruebas no pueden ejecutarse en paralelo, por lo que la mejor solución es codificar sus pruebas para que estén completamente aisladas, por ejemplo, haciendo que cada una cree su propia instancia única del esquema o cada uno se ejecuta en un contexto separado, por ejemplo, en el contexto de un inquilino diferente en un sistema SaaS. O en el contexto de un conjunto diferente de identificadores únicos. Etc.

Burlarse de la base de datos debería ser el primer paso. Eso supone que desea probar su código, no el conector de la base de datos y la capa de datos. Hay bibliotecas simuladas para (¿todos?) Idiomas.

More Interesting

Cómo configurar una base de datos para el servidor de mi sitio web que se puede escalar

¿Cuál es la diferencia entre host y servidor en términos de redes de computadoras?

¿Qué puedo hacer para alojar un sitio web que he creado con WordPress y el servidor WAMP? ¿Cómo puedo transferirlo de WAMP a un servidor en vivo?

¿Cuál es la razón para continuar manteniendo las imágenes de Facebook eliminadas por el usuario en los servidores FB?

Servidores: Si tuviera que comenzar a construir un sitio web de php hoy (verano de 2012) que espera que gane una comunidad grande y activa, ¿hay alguna razón por la que usaría Apache en lugar de Nginx?

¿Cuál es la mejor solución de respaldo (asequible) de computadora a computadora y en la nube con versiones? Se necesita hacer una copia de seguridad de dos servidores a través de Internet y de la red (ampliado con VDSL).

¿Qué diferencia de rendimiento en el mundo real hace el uso de Java vs C ++ en un servidor?

En Kali Linux, ¿cómo hago para que un NordVPN se conecte automáticamente a un servidor al inicio?

¿Cuáles son las ventajas de usar Cascade Server, un sistema de gestión de contenido web de Hannon Hill?

Cómo reemplazar un servidor de archivos

¿Alguien necesita un servidor dedicado para obtener bitcoin?

¿Qué es una buena compañía que proporciona servicios de centro de datos: manos remotas, servidores de instalación y rack, instalación de servidores de parches, etc.

¿Quiénes son los hosts de servidor VPS de la UE más asequibles?

¿Quiénes son los mejores proveedores de servicios de centros de datos en India?

¿Cómo configuro un servidor de almacenamiento local como controlador de versión para Unity Engine Collaboration? Quiero que el proyecto se guarde dentro del servidor de almacenamiento local para evitar que cualquier parte sea robada o reutilizada.