Laravelでのテストコード作成
Laravelでテストコードを作成する記事を探しましたが、バージョン5や6の記事が多く、バージョン10での書き方が見つかりませんでした。自分への備忘録を兼ねて記事にします。
ここでは、事前に定義したデータベースに対して、テストコードで使用するテストデータを生成する方法について説明します。
対象者
この記事は下記のような人を対象にしています。
- Laravelでテストコードを作成したい人
- Laravelの初学者
使用バージョン
- Laravel 10.10
手順
まずは、Productモデルを作成します。
php artisan make:model Product
次に、マイグレーションファイルを作成して、products
テーブルを生成します。
php artisan make:migration create_products_table
// database/migrations/create_products_table.php
public function up(): void
{
Schema::create('products', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name')->nullable(false);
$table->unsignedInteger('cost')->nullable(false);
$table->timestamps();
});
}
マイグレーションファイルを生成した後は、以下のコマンドでデータベースをマイグレーションします。
php artisan migrate
次は、ファクトリーファイルを作成します。これにより、テストデータを簡単に生成できます。costは、数値4桁に指定しています。
php artisan make:factory ProductFactory
// database/factories/ProductFactory.php
public function definition(): array
{
return [
'name' => $this->faker->name(),
'cost' => $this->faker->numberBetween(1000, 9999), // 1000から9999の範囲で数値を生成
];
}
最後に、テストコードを作成します。以下のコードは商品を追加するテストを示しています。
factroyメソッドを使用することで、簡単にデータベースにテストデータを挿入できます。
// tests/Feature/ShopTest.php
public function test_product(): void
{
// 商品を追加
$product = Product::factory()->create();
$this->assertDatabaseHas('products', [
'id' => $product->id,
'name' => $product->name,
'cost' => $product->cost,
]);
}
以下のコマンドを実行してテストを行います。
php artisan test
まとめ
このようにして、Laravelでは簡単にテストデータを生成し、データベースに保存することができます。テストを通じて、アプリケーションの挙動を確認しやすくなります。
おわりに
以上が、Laravelでのテストコード作成に関する基本的な説明です。これを参考に、さらに詳細なテストを作成してみてください。