sql >> Databáze >  >> RDS >> PostgreSQL

Mocha testování PostgreSQL pomocí Knex mi dává chybu MigrationLocked

Pro každého, kdo na to narazil, problém ve skutečnosti pocházel z db.js , konkrétně poslední řádek:

const config = require('../knexfile.js');
const env = process.env.NODE_ENV || 'development';
const knex = require("knex")(config[env]);

module.exports = knex;

knex.migrate.latest([config]);

Samozřejmě je to asynchronní a testy importovaly tento soubor předtím, než se pokusily spustit vlastní funkce knex, což způsobilo zámek. Obešel jsem to přidáním klauzule, která blokuje toto spuštění při testování:

if(process.env.NODE_ENV != 'test') {
   knex.migrate.latest([config])
}

Poté můžete vytvořit testovací prostředí přidáním process.env.NODE_ENV='test' do každého souboru specifikací nebo instalací npm env test modul.



  1. Vytváření instance z dat mySQL pomocí php

  2. MySQL COUNT() – Získá počet řádků, které má dotaz vrátit

  3. Vytváření dynamických odkazů s PHP/MySQL

  4. Jak mohu seřadit podle sloupce tabulky v různých případech (Oracle)