如何使用 faker 生成带有自定义域的独特假冒电子邮件?
How to generate a unique fake email with a custom domain with faker?
我有一个 laravel 应用程序要求注册用户必须使用他们公司的电子邮件(自定义域)。
那么我怎样才能用 faker 生成器实现它来用我的模型工厂测试它?
您可以使用 php 的 preg_replace
函数的简单技巧:
preg_replace('/@example\..*/', '@domain.com', $faker->unique()->safeEmail)
因此您的 laravel 模型工厂可能如下所示:
$factory->define(App\User::class, function (Faker\Generator $faker) {
static $password;
return [
'name' => $faker->name,
'email' => preg_replace('/@example\..*/', '@domain.com', $faker->unique()->safeEmail),
'password' => $password ?: $password = bcrypt('secret'),
'avatar' => $faker->imageUrl,
'remember_token' => str_random(10),
];
});
您可以使用Faker\Generator创建辅助变量:
$factory->define(App\User::class, function (Faker\Generator $faker) {
$userName = $faker->userName;
$uniqueSuffix = $faker->unique()->word;
$domain = 'your.domain.com';
$uniqueFakeEmail = "$userName.$uniqueSuffix@$domain";
return [
'email' => $uniqueFakeEmail,
// ...
];
});
我有一个 laravel 应用程序要求注册用户必须使用他们公司的电子邮件(自定义域)。
那么我怎样才能用 faker 生成器实现它来用我的模型工厂测试它?
您可以使用 php 的 preg_replace
函数的简单技巧:
preg_replace('/@example\..*/', '@domain.com', $faker->unique()->safeEmail)
因此您的 laravel 模型工厂可能如下所示:
$factory->define(App\User::class, function (Faker\Generator $faker) {
static $password;
return [
'name' => $faker->name,
'email' => preg_replace('/@example\..*/', '@domain.com', $faker->unique()->safeEmail),
'password' => $password ?: $password = bcrypt('secret'),
'avatar' => $faker->imageUrl,
'remember_token' => str_random(10),
];
});
您可以使用Faker\Generator创建辅助变量:
$factory->define(App\User::class, function (Faker\Generator $faker) {
$userName = $faker->userName;
$uniqueSuffix = $faker->unique()->word;
$domain = 'your.domain.com';
$uniqueFakeEmail = "$userName.$uniqueSuffix@$domain";
return [
'email' => $uniqueFakeEmail,
// ...
];
});