ホームページ > PHPフレームワーク > Laravel > Laravel 開発: Laravel Testing を使用して効率的な単体テストを行うにはどうすればよいですか?

Laravel 開発: Laravel Testing を使用して効率的な単体テストを行うにはどうすればよいですか?

WBOY
リリース: 2023-06-14 08:38:42
オリジナル
1688 人が閲覧しました

Laravel 開発: Laravel Testing を使用して効率的な単体テストを行うにはどうすればよいですか?

Laravel は PHP 開発の主要なフレームワークであり、学習しやすく、使いやすく、完全な機能を備えているため、大多数の PHP 開発者に愛されています。適切なテストはアプリケーションの品質と安定性を向上させるため、開発プロセスではテストが非常に重要です。

Laravel フレームワークには Laravel テスト ツールが組み込まれており、開発者が効率的な単体テストを迅速に作成できるようになります。この記事では、Laravel Testingを使って単体テストを効率的に行う方法を紹介します。

なぜ単体テストを行うのか?

開発プロセスにおいて、単体テストは非常に重要なリンクです。

  • コードの品質を確保する: テストによってコードのエラーや問題を検出できるため、開発者はタイムリーに問題を解決し、コードの品質を確保できます。
  • コード カバレッジの向上: テストは、開発者がコード カバレッジを向上させ、テストがアプリケーションのあらゆる側面を確実にカバーできるようにするのに役立ちます。
  • コードの動作を確認する: テストは、開発者がコードの動作を確認し、コードのロジックが正しいことを確認するのに役立ちます。

単体テストを使用すると、コード開発における問題のリスクが大幅に軽減され、コードの品質と安定性が向上します。

Laravel Testing を単体テストに使用する利点

単体テストを実行するには、開発者はテスト フレームワークを使用して、テスト ケースが正常に動作することを確認し、問題やエラーを迅速に検出する必要があります。 Laravel Testing は、Laravel フレームワークの中で非常に人気のあるテスト フレームワークです。このフレームワークには次の利点があります:

  • 使いやすさ: Laravel Testing にはシンプルで直感的な API インターフェイスがあり、開発者はテスト ケースをすばやく作成して実行できます。
  • Laravel フレームワークの組み込み: Laravel Testing は、Laravel フレームワークに組み込まれたテスト フレームワークと統合されているため、開発者はその強力な機能を利用できます。相互の作用。 。
  • 広く使用されている: Laravel は、大規模なユーザー グループとコミュニティがあり、ドキュメントや情報などの貴重なリソースを多数提供する、広く使用されているフレームワークです。

Laravel テストの基本構造

テスト ケースを作成する前に、Laravel テストの基本構造を理解する必要があります。 Laravel テスト ケースも、他の Laravel コンポーネントと同様にクラスです。このクラスは PHPUnitFrameworkTestCase クラスを継承し、Laravel フレームワークのさまざまなサービスにアクセスできる必要があります。たとえば、テスト中にコンソール コマンドにアクセスする必要がある場合は、Artisan::call メソッドを使用できます。

Laravel Testing の基本構造は次のとおりです:

<?php

namespace TestsUnit;

use PHPUnitFrameworkTestCase;

class ExampleTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {
        $this->assertTrue(true);
    }
}
ログイン後にコピー
ログイン後にコピー

このクラスには、テスト ケースのサンプル メソッド testBasicTest() が含まれています。テスト メソッドは別個の単一テストとして扱う必要があるため、テストの目的に応じてテスト メソッドに名前を付けることが最善です。

テスト ケースの作成

テスト ケースの作成プロセスは通常、次の手順に分かれています。

  • テスト環境を準備します。Laravel アプリケーションを起動し、セットアップします。テスト環境。
  • テストの定義: ユーザーは、アプリケーション ロジックの正確性を確認するために 1 つ以上のテストを定義します。
  • テストの実行: テストを実行して結果を収集し、結果に従って分類し、後で比較できるようにテスト結果を記録します。

テストの定義

テスト ケースを定義するプロセスには、通常、次の側面が含まれます。

テスト環境をセットアップする

テストを開始する前に、テスト環境をセットアップする必要があります。 .env.testing ファイルを作成して、そのファイルにテスト環境変数を設定します。 Laravel フレームワークは、アプリケーションのロード時にこのファイルを自動的に検出し、デフォルトでこのファイルの設定を使用します。

.env.testing の例:

APP_NAME=Laravel
APP_ENV=testing
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=sqlite
DB_DATABASE=:memory:
ログイン後にコピー

他の設定も .env.testing ファイルで追加または変更できます。ここでは、軽量でテストが簡単なデータベース エンジンである sqlite データベースを使用します。

sqlite データベースを使用する場合、Laravel はデータの移行を自動的に完了するため、手動での移行は必要ありません。テストメソッドでデータベースにアクセスすると、Laravel はデータをデータベースに配置する移行を自動的に使用します。したがって、テスト実行中にスキーマを手動で定義する必要はありません。

簡単なサンプル テストを作成します:

tests/Unit/ExampleTest.php

<?php

namespace TestsUnit;

use PHPUnitFrameworkTestCase;

class ExampleTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {
        $this->assertTrue(true);
    }
}
ログイン後にコピー
ログイン後にコピー

このテストをコンソールで実行するには、次のコマンドを使用します:

phpunit tests/Unit/ExampleTest.php
ログイン後にコピー

このテストを実行すると、テスト結果がコンソールに出力されます:

PHPUnit 8.5.1 by Sebastian Bergmann and contributors.

.                                                                   1 / 1 (100%)

Time: 00:00.010, Memory: 6.00 MB

OK (1 test, 1 assertion)
ログイン後にコピー

テストが成功したことがわかります。

Laravel データベースの使用

Laravel アプリケーション内で定義された実際のデータベースにアクセスする必要がある場合があります。アプリケーションで Laravel の DB ファサードを使用する場合、Laravel は現在のアプリケーション環境を自動的に選択します。

テストは次の方法で実行できます。

$this->assertDatabaseHas('users', [
    'email' => 'test@example.com'
]);
ログイン後にコピー

このテスト方法では、ユーザーの保存と取得をテストします。ここでは、assertDatabaseHas() を使用してデータが存在するかどうかをテストするアサーションを追加します。

データベースにレコードを挿入したい場合は、次の方法を使用できます:

$user = factory(User::class)->create();

$this->assertDatabaseHas('users', [
    'email' => $user->email
]);
ログイン後にコピー

偽のオブジェクトを使用する

Laravel が提供する Mockery オブジェクト ライブラリを使用して、モック オブジェクトと推移的な依存関係を生成します。高価なハードコーディングされたオブジェクトの代わりに Mockery モッ​​ク フレームワークを使用し、これらのモック サービスを他の依存関係、テスト オブジェクト、またはより大きなコンポーネントとともに活用します。

Mockery はコードを大幅に簡素化し、アプリケーションの品質と保守性を向上させます。

$string = Mockery::mock('IlluminateHttpRequest');
$string->shouldReceive('input')

    ->once()
    ->andReturn('Welcome to Laravel Testing');
ログイン後にコピー

$this->assertTrue(strlen($string->input()) === 23);

在上面的代码示例中,我们首先创建了一个伪造对象$string,它是IlluminateHttpRequest的模拟实例。然后我们编写测试用例来测试模拟实例$input方法的返回值。

完成这些步骤后,我们便可以快速编写测试用例,取得高效、可维护、高质量的程序。

总结

直接就知道程序的运行结果是不能保证代码完美运作,甚至有可能出现严重的错误。而单元测试能够较全面地检测应用程序的每个组成部分,从而确保应用程序的质量与稳定性。

在Laravel框架中,Laravel Testing是一种流行的测试框架。Laravel Testing是受欢迎的,因为它易于使用,与Laravel框架深度结合,并且具有广泛的使用情况与应用。

在编写测试用例时,应确保测试方法的名称明确地描述了测试的功能。在测试方法中,使用assert()和其他相关断言操作来测试方法。完成测试后,可以使用PHPUnit来运行测试。

因为Laravel Testing已经在Laravel框架中集成,所以它使得开发人员可以轻松地测试他们的应用程序。Laravel Testing使开发人员能够更自信地修改和更新代码,并确保不会对任何现有功能产生负面影响。

以上がLaravel 開発: Laravel Testing を使用して効率的な単体テストを行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート