Skip to content

Commit f05859e

Browse files
authored
Merge pull request #8476 from kenjis/docs-fabricator.rst
docs: update fabricator.rst
2 parents 057bcbd + dcd9451 commit f05859e

5 files changed

Lines changed: 21 additions & 13 deletions

File tree

user_guide_src/source/testing/fabricator.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Generating Test Data
33
####################
44

55
Often you will need sample data for your application to run its tests. The ``Fabricator`` class
6-
uses fzaninotto's `Faker <https://github.com/FakerPHP/Faker>`_ to turn models into generators
6+
uses `Faker <https://github.com/FakerPHP/Faker>`_ to turn models into generators
77
of random data. Use fabricators in your seeds or test cases to stage fake data for your unit tests.
88

99
.. contents::
@@ -56,6 +56,7 @@ method where you can define exactly what the faked data should look like:
5656
Notice in this example how the first three values are equivalent to the formatters from before. However for ``avatar``
5757
we have requested an image size other than the default and ``login`` uses a conditional based on app configuration,
5858
neither of which are possible using the ``$formatters`` parameter.
59+
5960
You may want to keep your test data separate from your production models, so it is a good practice to define
6061
a child class in your test support folder:
6162

user_guide_src/source/testing/fabricator/005.php

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,30 @@
22

33
namespace App\Models;
44

5+
use Faker\Generator;
6+
57
class UserModel
68
{
79
// ...
810

911
public function fake(Generator &$faker)
1012
{
1113
return [
12-
'first' => $faker->firstName,
13-
'email' => $faker->email,
14-
'phone' => $faker->phoneNumber,
15-
'avatar' => Faker\Provider\Image::imageUrl(800, 400),
14+
'first' => $faker->firstName(),
15+
'email' => $faker->email(),
16+
'phone' => $faker->phoneNumber(),
17+
'avatar' => \Faker\Provider\Image::imageUrl(800, 400),
1618
'login' => config('Auth')->allowRemembering ? date('Y-m-d') : null,
1719
];
1820

1921
/*
2022
* Or you can return a return type object.
2123
2224
return new User([
23-
'first' => $faker->firstName,
24-
'email' => $faker->email,
25-
'phone' => $faker->phoneNumber,
26-
'avatar' => Faker\Provider\Image::imageUrl(800, 400),
25+
'first' => $faker->firstName(),
26+
'email' => $faker->email(),
27+
'phone' => $faker->phoneNumber(),
28+
'avatar' => \Faker\Provider\Image::imageUrl(800, 400),
2729
'login' => config('Auth')->allowRemembering ? date('Y-m-d') : null,
2830
]);
2931

user_guide_src/source/testing/fabricator/006.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
namespace Tests\Support\Models;
44

55
use App\Models\UserModel;
6+
use Faker\Generator;
67

78
class UserFabricator extends UserModel
89
{
9-
public function fake(&$faker)
10+
public function fake(Generator &$faker)
1011
{
1112
// ...
1213
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<?php
22

33
use CodeIgniter\Test\Fabricator;
4+
use Tests\Support\Models\UserFabricator;
45

5-
$fabricator = new Fabricator(\UserFabricator::class);
6+
$fabricator = new Fabricator(UserFabricator::class);
67
$testUser = $fabricator->make();
78
print_r($testUser);

user_guide_src/source/testing/fabricator/021.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@
22

33
namespace App\Models;
44

5+
use CodeIgniter\Test\Fabricator;
6+
use Faker\Generator;
7+
58
class UserModel
69
{
710
protected $table = 'users';
811

912
public function fake(Generator &$faker)
1013
{
1114
return [
12-
'first' => $faker->firstName,
13-
'email' => $faker->email,
15+
'first' => $faker->firstName(),
16+
'email' => $faker->email(),
1417
'group_id' => mt_rand(1, Fabricator::getCount('groups')),
1518
];
1619
}

0 commit comments

Comments
 (0)