如何使用 faker 生成带有自定义域的独特假电子邮件?

问题描述 投票:0回答:4

我有一个 Laravel 应用程序,要求注册用户必须使用他们的公司电子邮件(自定义域)。

那么我如何使用 faker 生成器来实现这一目标,并用我的模型工厂进行测试?

php laravel laravel-5 faker
4个回答
16
投票

您可以使用 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),
    ];
});

0
投票

您可以使用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,
        // ...
    ];
});

0
投票

另一种选择可能是这样的

$email = $faker->userName().'@mydomain.com';

0
投票

我知道这个帖子已经很老了,但以防万一其他人需要相关支持,这就是我在我的案例中所做的。

这是小代码片段

$rsMemberID = $rsMembers->getColumnVal("mem_id");
$rsNewMemberID = $rsMemberID+1;
$email = $rsNewMemberID."@example.com";
$email;

$rsMemberID = $rsMembers->getColumnVal("mem_id");
=> 其中 mem_id 是成员 ID 列,例如 123450 等。因此,我使用 $rsMemberID

为该列创建了一个变量

$rsNewMemberID = $rsMemberID+1;
=> 现在,您在 ID 上加 1。例如,如果 mem_id = 123,则现在变为 123+1 = 124

$email = $rsNewMemberID."@example.com";
=> 所以虚拟电子邮件现在变成了 [电子邮件受保护]

最后,在输入框中添加电子邮件变量

$email;

希望这对将来的人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.