Este error significa que Strapi no puede cargar la configuración de base de datos para tests.
config/
├── database.ts # Config base (PostgreSQL para desarrollo)
└── env/
└── test/
├── database.ts # Config para tests (SQLite in-memory)
└── plugins.ts # Config de plugins para tests
ls -la config/env/test/Debe mostrar:
database.ts
plugins.ts
El archivo DEBE tener exactamente este formato:
/**
* Test Database Configuration (ADR-009)
*
* Uses SQLite in-memory database for fast, isolated testing.
* Each test run gets a fresh database with no persistent state.
*/
export default () => ({
connection: {
client: 'sqlite',
connection: {
filename: ':memory:',
},
useNullAsDefault: true,
debug: false,
pool: {
min: 1,
max: 1,
},
},
});IMPORTANTE:
- ✅ Debe tener
export default () => ({ - ✅ Debe tener
connection: { ... }como primer nivel - ✅ Dentro va
client: 'sqlite' - ❌ NO debe tener
clientdirectamente en el primer nivel
/**
* Test Plugin Configuration (ADR-009)
*
* Configures email plugin to use stream transport for testing.
* Emails are buffered in memory, not sent externally.
*/
export default () => ({
email: {
config: {
provider: 'nodemailer',
providerOptions: {
streamTransport: true,
newline: 'unix',
buffer: true,
},
settings: {
defaultFrom: '[email protected]',
defaultReplyTo: '[email protected]',
},
},
},
});En package.json, el script de test debe ser:
{
"scripts": {
"test": "NODE_ENV=test jest --runInBand --forceExit --detectOpenHandles"
}
}# Eliminar directorios de build que pueden interferir
rm -rf dist/
rm -rf config-dist/
rm -rf .strapi/
rm -rf node_modules/
# Reinstalar dependencias
npm installgrep "better-sqlite3" package.jsonDebe mostrar:
"better-sqlite3": "11.3.0"Si no existe, instalar:
npm install [email protected]npm testStrapi carga configuración en este orden:
- Archivos base en
config/*.ts - Overrides por entorno en
config/env/{NODE_ENV}/*.ts - Variables de entorno desde
.env
Ejemplo con NODE_ENV=test:
config/database.ts ← Base (PostgreSQL)
↓
config/env/test/database.ts ← Override (SQLite) ✅ ESTE SE USA
↓
.env variables ← Variables de entorno
# 1. Verificar estructura
tree config/
# 2. Verificar NODE_ENV en el comando
cat package.json | grep '"test"'
# 3. Verificar que no hay archivos compilados
ls config-dist/ 2>/dev/null || echo "OK - No existe config-dist/"
# 4. Verificar dependencias instaladas
ls node_modules/better-sqlite3/ > /dev/null && echo "✅ SQLite instalado" || echo "❌ Falta SQLite"
# 5. Test de carga de config (debug)
NODE_ENV=test node -e "console.log(require('./config/env/test/database.ts').default())"| Aspecto | Desarrollo (npm run docker:dev) |
Testing (npm test) |
|---|---|---|
| Entorno | Docker container | Node.js local |
| NODE_ENV | development |
test |
| Config DB | config/database.ts |
config/env/test/database.ts |
| Base de Datos | PostgreSQL (container) | SQLite in-memory |
| Persistencia | Sí (named volume) | No (RAM) |
| Requiere Docker | ✅ Sí | ❌ No |
Causa: Tests corriendo en paralelo con SQLite
Solución: Asegurar que el comando test tiene --runInBand:
"test": "NODE_ENV=test jest --runInBand ..."Causa: Dependencia no instalada
Solución:
npm install [email protected]Causa: Falta el directorio o archivo de configuración
Solución: Crear la estructura completa:
mkdir -p config/env/test
# Luego crear los archivos database.ts y plugins.tsAntes de ejecutar tests, verificar:
- Existe
config/env/test/database.ts - Existe
config/env/test/plugins.ts - El formato de archivos es correcto (export default function)
-
package.jsontieneNODE_ENV=testen script - Dependencia
better-sqlite3instalada - No existe
config-dist/(eliminar si existe) -
node_modules/instalado (npm install)
Si nada funciona, ejecutar esto:
# 1. Limpiar todo
rm -rf node_modules/ dist/ config-dist/ .strapi/
# 2. Reinstalar
npm install
# 3. Verificar estructura
ls -la config/env/test/
# 4. Correr tests
npm testmkdir -p config/env/testcat > config/env/test/database.ts << 'EOF'
/**
* Test Database Configuration (ADR-009)
*/
export default () => ({
connection: {
client: 'sqlite',
connection: {
filename: ':memory:',
},
useNullAsDefault: true,
debug: false,
pool: {
min: 1,
max: 1,
},
},
});
EOFcat > config/env/test/plugins.ts << 'EOF'
/**
* Test Plugin Configuration (ADR-009)
*/
export default () => ({
email: {
config: {
provider: 'nodemailer',
providerOptions: {
streamTransport: true,
newline: 'unix',
buffer: true,
},
settings: {
defaultFrom: '[email protected]',
defaultReplyTo: '[email protected]',
},
},
},
});
EOF- ADR-009: Testing Strategy
- ADR-002: TypeScript Config Compilation
- Strapi v5 Docs: https://docs.strapi.io/dev-docs/configurations