Laravel créer une base de données lors de l'essai
Je suis en train de lancer mon test de l'unité et de créer une base de données lors de l'installation. Pour une raison que j'obtiens l'erreur Unknown database 'coretest'
. Si j'ai créer la base de données si manuellement et exécutez le test puis-je obtenir Can't create database 'coretest'; database exists
.
De l'instruction drop database fonctionne maintenant créer la base de données.
Voici mon installation et les méthodes de démontage:
class TestCase extends Illuminate\Foundation\Testing\TestCase {
/**
* Default preparation for each test
*/
public function setUp() {
parent::setUp();
DB::statement('create database coretest;');
Artisan::call('migrate');
$this->seed();
Mail::pretend(true);
}
public function tearDown() {
parent::tearDown();
DB::statement('drop database coretest;');
}
}
OriginalL'auteur ipengineer | 2013-06-28
Vous devez vous connecter pour publier un commentaire.
La raison pour laquelle vous obtenez cette erreur est tout simplement parce que laravel tente de se connecter à la base de données spécifiée dans la configuration, qui n'existe pas.
La solution est de construire votre propre AOP de connexion dans les paramètres sans spécification de base de données (AOP) et d'exécuter
CREATE DATABASE $dbname
déclaration de l'utiliser.Nous avons utilisé cette approche pour des tests dans notre projet sans aucun problème.
Ici code:
OriginalL'auteur neoascetic
J'ai l'impression d'avoir une beaucoup plus propre manière de faire. Juste exécuter les commandes normalement à travers la coquille.
OriginalL'auteur Leng
neoascetic a la meilleure réponse, car vous aurez essentiellement à l'amorçage de laravel base de données du fichier de config de nouveau.
Donc un habile hack est de créer une base de données à nouveau après avoir chuté. Pas besoin de toucher config/database.
OriginalL'auteur Ryan Boyd
Dans Laravel 5 il est possible de faire appel des migrations en interne à l'Laravel processus qui se termine par l'exécution d'un bon peu plus rapide que d'utiliser des commandes externes.
En cas de test::setUp (ou plus tôt), appelez la commande de migration avec:
\Illuminate\Foundation\Testing\DatabaseMigrations
?OriginalL'auteur Israel Zion Shirk