Blog - Fake-User mit Laravel


Fake-User mit Laravel

  • 16.11.2017
  • Laravel
  • Fake
  • Faker
  • User
  • fzaninotto
Gerade beim Aufbau eines neues Produkts oder einer neuen Website sind immer wieder Fake-Daten notwendig, um verschiedene Szenarien durchzuspielen oder zu testen. In Laravel gibt es dafür die Bibliothek Faker diese ist unter https://github.com/fzaninotto/Faker zu finden. Zum Einbinden der Bibliothek einfach in der Kommandozeile folgende Befehle ausführen.
composer require fzaninotto/faker
composer update
Danach kann z. B. auf die Klasse Factory zugegriffen werden. Um nun Fake-Daten zu erzeugen muss zuerst eine Instanz der Klasse Factory erzeugt werden. Der Faker unterstützt auch viele länderspezifische Daten, wie Namen, Adressen oder Kontonummern. Im folgenden Beispiel wird eine Instanz mit länderspezifischen Daten für Österreich erzeugt.
// create faker instance
$faker = Faker\Factory::create('de_AT');
// generate data
echo $faker->name;
// Jana Kofler
echo $faker->address;
// Weidingerweg 64b 8477 Mank
echo $faker->bankAccountNumber;
// AT026533046435459609
Bei vielen Projekten werden Benutzerdaten benötigt, da am Anfang natürlich nur intern getestet wird, sind nur wenige Benutzerdaten vorhanden. Damit zumindest ein Set an Benutzern vorhanden ist, können diese mittels Faker erzeugt werden. Wie schon zuvor wird eine Instanz der Klasse Factory mit dem Parameterwert de_AT erzeugt, damit wird sichergestellt, dass Fake-Daten für Österreich erzeugt werden. Danach werden Vorname und Nachname der Person und eine dazugehörige E-Mailadresse erzeugt. Zum Schluss werden die neuen Benutzer in der Datenbank gespeichert. Die Benutzer haben keine Passwörter, d.h. damit ist eine Anmeldung nicht möglich, dies kann falls nötig leicht ergänzt werden.
use App\User;
use Faker\Factory;
// define replacements and number of users
$search = array("Ä", "Ö", "Ü", "ä", "ö", "ü", "ß", "´", " ");
$replace = array("Ae", "Oe", "Ue", "ae", "oe", "ue", "ss", "", "");
$signs = ".-_";
$num = 100;
// generate fake users
$faker = Factory::create('de_AT');
for($i = 0; $i < $num; $i++)
{
$firstName = $faker->firstName;
$lastName = $faker->lastName;
// custom email address
$email = sprintf('%s%s%s@%s',
$firstName,
$signs[rand(0, mb_strlen($signs) - 1)],
rand(0, 1) ? $lastName : rand(10, 9999),
$faker->safeEmailDomain
);
$email = str_replace($search, $replace, mb_strtolower($email));
$user = new User();
$user->name = $firstName .' '. $lastName;
$user->email = $email;
$user->save();
}
Bei der E-Mailadresse könnte auch $faker->email oder $faker->safeEmail verwendet werden. Der Nachteil dabei ist, dass die E-Mailadresse wirklich nichts mit dem Benutzer zu tun hat.
Lilly Krainer => jasmin26@gmx.at
Daher ist hier eine kleiner Codeteil enthalten, der aus dem Vornamen und dem Nachnamen oder einer Zufallszahl eine E-Mailadresse erstellt.
Janine Fischer => janine_5339@example.org
Benjamin Schranz => benjamin-schranz@example.org
Es ist natürlich auch möglich andere Daten zu generieren, wenn man z. B. einen Blog oder ein Forum entwickelt und hierfür Posts oder Kommentare benötigt.