sql >> Base de Datos >  >> RDS >> Mysql

Pruebas de aceptación de codecepción dentro de la transacción de la base de datos en MySQL

Siempre hay otras opciones :).

En mi caso, usar un volcado estaba fuera de discusión porque también tenemos una base de datos muy grande (1.2 GB cuando se reduce a lo esencial,> 250 GB en vivo). En cambio, tengo un montón de archivos .sql que eliminan cualquier registro. que fueron insertados por una prueba específica.

Tengo una clase DbHelper que tiene esta función para ejecutar consultas:

public function executeOnDatabase($path_to_sql_file)
{
    $sql = file_get_contents($path_to_sql_file);
    $dbh = $this->getModule('Db')->dbh;
    $this->debugSection('Query', $sql);
    $sth = $dbh->prepare($sql);

    return $sth->execute();
}

Funciona a las mil maravillas y no requiere más gastos generales para ejecutar las pruebas.

Actualización:

Si trata con usuarios y sus datos relacionados, generalmente es bastante fácil apuntar a todos los registros que necesita eliminar. Lo más probable es que el nombre de usuario y el correo electrónico sean únicos, y puede usarlos para obtener la identificación (clave principal de incremento automático) del usuario. Es probable que esa identificación se use en las tablas relacionadas. Por ejemplo, así:

SET @user_id = (SELECT `id` FROM `users` WHERE `username` = 'rgsfdg');
SET @email = '[email protected]';
DELETE FROM `mail_queue` WHERE `send_to` = @email;
DELETE FROM `user_settings` WHERE `user_id` = @user_id;
DELETE FROM `users` WHERE `id` = @user_id;