我有一个 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,
// ...
];
});
另一种选择可能是这样的
$email = $faker->userName().'@mydomain.com';
我知道这个帖子已经很老了,但以防万一其他人需要相关支持,这就是我在我的案例中所做的。
这是小代码片段
$rsMemberID = $rsMembers->getColumnVal("mem_id");
$rsNewMemberID = $rsMemberID+1;
$email = $rsNewMemberID."@example.com";
$email;
$rsMemberID = $rsMembers->getColumnVal("mem_id");
=> 其中 mem_id 是成员 ID 列,例如 123、450 等。因此,我使用 $rsMemberID 为该列创建了一个变量
$rsNewMemberID = $rsMemberID+1;
=> 现在,您在 ID 上加 1。例如,如果 mem_id = 123,则现在变为 123+1 = 124
$email = $rsNewMemberID."@example.com";
=> 所以虚拟电子邮件现在变成了 [电子邮件受保护]
最后,在输入框中添加电子邮件变量
$email;
。
希望这对将来的人有帮助。