1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravelにおけるテストコードにて、テストデータを作成する方法

Posted at

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でのテストコード作成に関する基本的な説明です。これを参考に、さらに詳細なテストを作成してみてください。


1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?