Laravelに関する質問です。
以下の様に「database」内の「factories」内の「UserFactory.php」と、「tests」内の「Feature」内の「HelloTest.php」を記述しました。
この時、ターミナルで「vendor/bin/phpunit」を実行するのですが、
「Tests\Feature\HelloTest::testHello
Error: Call to undefined function Tests\Feature\factory()
~/Desktop/laravelapp/tests/Feature/HelloTest.php:24」
と出て来てしまいます。
24行目のfactoryの修正を、「$user = 」or「$users = 」や、「$this->」にして見たりと、試して見ましたが、一向に変化がありません。
24行目のfactoryの修正の仕方が分かる方がいらっしゃればご教授願います。
UserFactory
1<?php 2 3namespace Database\Factories; 4 5use App\Models\User; 6use App\Models\Person; 7use Illuminate\Database\Eloquent\Factories\Factory; 8use Illuminate\Support\Str; 9use Faker\Generator as Faker; 10 11$factory->define(App\Models\User::class, function (Faker $faker) { 12 static $password; 13 14 return [ 15 'name' => $faker->name, 16 'email' => $faker->unique()->safeEmail, 17 'email_verified_at' => now(), 18 'password' => '???', // password 19 'remember_token' => Str::random(10), 20 ]; 21}); 22 23$factory->define(App\Models\Person::class, function (Faker $faker) { 24 return [ 25 'name' => $faker->name, 26 'mail' => $faker->safeEmail, 27 'age' => random_int(1,99), 28 ]; 29});
HelloTest
1<?php 2 3namespace Tests\Feature; 4 5use Illuminate\Foundation\Testing\DatabaseTransactions; 6use Illuminate\Foundation\Testing\DatabaseMigrations; 7use Illuminate\Foundation\Testing\WithoutMiddleware; 8use Tests\TestCase; 9use App\Models\User; 10use App\Models\Person; 11use Database\Factories\UserFactory; 12 13class HelloTest extends TestCase 14{ 15 use DatabaseMigrations; 16 /** 17 * A basic feature test example. 18 * 19 * @return void 20 */ 21 public function testHello() 22 { 23 // ダミーで利用するデータ 24 factory(User::class)->create([ 25 'name' => 'AAA', 26 'email' => 'BBB@CCC.COM', 27 'password' => 'ABCABC', 28 ]); 29 factory(User::class, 10)->create(); 30 31 $this->assertDatabaseHas('users', [ 32 'name' => 'AAA', 33 'email' => 'BBB@CCC.COM', 34 'password' => 'ABCABC', 35 ]); 36 37 // ダミーで利用するデータ 38 factory(Person::class)->create([ 39 'name' => 'XXX', 40 'mail' => 'YYY@ZZZ.COM', 41 'age' => '123', 42 ]); 43 factory(Person::class, 10)->create(); 44 45 $this->assertDatabaseHas('people', [ 46 'name' => 'XXX', 47 'mail' => 'YYY@ZZZ.COM', 48 'age' => '123', 49 ]); 50 } 51}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/05 12:41