$factory->define(Order::class, function (Faker $faker, $passedArguments = []) {
return [
'user_id' => function () use ($passedArguments) {
// Если не передали user_id, то создаём своего
if (! array_key_exists('user_id', $passedArguments)) {
return factory(User::class)->create()->id;
}
}
];
});
Даст идентичный результат
Во-вторых, что важнее:
Данной проблемы, которую вы описываете, не существует
Вот вам пример из реального проекта, тест написал специально для вас
<?php
/* @var $factory \Illuminate\Database\Eloquent\Factory */
use Faker\Generator as Faker;
use Illuminate\Support\Str;
$factory->define(\Constructor\Auth\Models\User::class, function (Faker $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => bcrypt('secret'),
'remember_token' => Str::random(10),
'guid' => $faker->unique()->uuid,
];
});
namespace Tests\Unit;
use Constructor\Auth\Models\User;
use Constructor\Calculations\Models\Calculation;
use Tests\TestCase;
class FactoryTest extends TestCase
{
public function testCreateAddOneUser()
{
// Given user
$user = factory(User::class)->create();
// When we use Order factory and provide user_id parameter
$calculation = factory(Calculation::class)->create(['user_guid' => $user->guid]);
// Then we should have new Order::class instance with provided user_id
$this->assertEquals($user->guid, $calculation->user_guid);
// Let's check that system has one user in DB
$this->assertEquals(1, User::count());
}
}
$ phpunit -- tests/Unit/FactoryTest.php
> OK (1 test, 2 assertions)
Отдельно взятые данные с вышек бесполезны, а вот совместив их с другими данными что есть (теоретически) у фейсбука можно получить очень много интересной информации.
Даст идентичный результат
Во-вторых, что важнее:
Данной проблемы, которую вы описываете, не существует
Вот вам пример из реального проекта, тест написал специально для вас
Спасибо за статью, а когда можно будет пощупать новую версию?