Laravelは、ユニット、機(jī)能、ブラウザ(dusk)、害蟲(chóng)テストなど、いくつかのタイプのテストを提供します。 1.単體テストは、メソッドやクラスなどの孤立した部品に焦點(diǎn)を當(dāng)てており、高速であり、完全なフレームワークは含まれません。 2。機(jī)能テストは、ルート、コントローラー、ワークフローをエンドツーエンドのテストするHTTPリクエストをシミュレートします。 3. dusk経由のブラウザテストJavaScriptが多いインターフェイスの実際のユーザーインタラクションを自動(dòng)化しますが、遅いです。 4.害蟲(chóng)テストは、Laravelテストのための簡(jiǎn)潔な構(gòu)文を提供し、すべてのテストタイプをサポートしながらボイラープレートを減らします。それぞれが特定の目的を果たし、開(kāi)発者が効果的にテストするために必要なものに基づいて選択できるようにします。
Laravelには、箱から出して堅(jiān)実なテスト基盤(pán)が付屬しており、サポートするさまざまな種類(lèi)のテストを理解することで、より良い、より信頼性の高いテストスイートの書(shū)き込みに役立ちます。取り組む主なタイプは、ユニットテストと機(jī)能テストですが、害蟲(chóng)PHPを使用している場(chǎng)合はブラウザテストや害蟲(chóng)テストなどの他のタイプもあります。
ユニットテスト
ユニットテストは、個(gè)々の方法やクラスなど、アプリケーションの小さな孤立した部分をテストするためのものです。 HTTPリクエストを伴うことも、フルフレームワークスタックと対話しません。これにより、それらは高速で集中します。
- ユニットテストの優(yōu)れた候補(bǔ)には、Laravelのフルランタイムに依存しないヘルパー機(jī)能、バリューオブジェクト、またはビジネスロジックが含まれます。
- Laravelでは、単體テストでは通常、
PHPUnit\Framework\TestCase
を拡張します。これは、Tests\TestCase
ではありません。これは、実行前にLaravelフレームワーク全體を起動(dòng)しないことを意味します。 - 例:データベースやルーティングシステムに觸れずに場(chǎng)所に基づいて稅金を計(jì)算するメソッドをテストします。
注意すべきことの1つは、多くの開(kāi)発者がLaravelで純粋なユニットテストを作成することをスキップしていることです。これは、ロジックのほとんどがフレームワークに結(jié)び付けられる傾向があるためです(コントローラーや雄弁モデルなど)。しかし、可能であれば、ユニットテストはテストスイートを大幅に高速化できます。
機(jī)能テスト
機(jī)能テストは、ほとんどのLaravel開(kāi)発者が日々使用するものです。これらは、完全なHTTPリクエストをシミュレートし、ルート、ミドルウェア、コントローラー、さらにはデータベースの対話など、アプリのさまざまな部分がどのように機(jī)能するかをテストすることができます。
- 機(jī)能テストは
Tests\TestCase
を拡張し、実行する前に完全なLaravelアプリケーションを起動(dòng)します。 -
$this->get('/url')
、$this->post('/url', $data)
、および->assertStatus(200)
または->assertSee('text')
などのチェーンアサーションなどのメソッドを使用して、実際のhttp呼び出しを作成できます。 - ユーザー登録、ログイン、フォーム検証、承認(rèn)チェックなどの複雑なワークフローをテストできます。
簡(jiǎn)単な例があります:
$ this-> post( '/login'、[ 「電子メール」=> 'test@example.com'、 「パスワード」=>「間違ったパスワード」 ] - > assertredirect( '/');
このタイプのテストにより、実際のユーザーが體験するように、機(jī)能が外部から正しく動(dòng)作するという自信が得られます。
ブラウザテスト(夕暮れ)
JavaScriptが多いページまたはブラウザインタラクションをテストする必要がある場(chǎng)合、Laravel Duskは、Chromedriverを使用したブラウザオートメーション用の表現(xiàn)??力豊かなAPIを提供します。
- duskテストは、ブラウザで実際のユーザーの動(dòng)作をシミュレートします。ボタンのクリック、フォームの埋め、Ajaxの呼び出し後に要素が表示されるかどうかを確認(rèn)します。
- これらのテストは機(jī)能テストよりも遅いため、數(shù)値を制限し、支払いフローや複雑なUIインタラクションなどの重要なパスに焦點(diǎn)を合わせることが最善です。
- セットアップでは、Composerを介してLaravel Duskをインストールし、
php artisan dusk:install
を?qū)g行します。
夕暮れのテストを作成して、ボタンをクリックした後にモーダルがポップアップすること、または何かを選択したときにドロップダウンメニューが動(dòng)的に更新されることを確認(rèn)できます。
害蟲(chóng)テスト(害蟲(chóng)PHPを使用している場(chǎng)合)
Pestは、Laravel専用に構(gòu)築されたモダンで軽量のテストフレームワークです。 Phpunitと一緒に動(dòng)作し、より簡(jiǎn)潔で表現(xiàn)力のある構(gòu)文を提供します。
- 害蟲(chóng)テストは主に機(jī)能テストに使用されますが、ユニットとブラウザーのテストを処理することもできます。
- 冗長(zhǎng)クラスの定義と繰り返しのセットアップの必要性を削除することにより、ボイラープレートコードを削減します。
- たとえば、複數(shù)のテスト方法を備えたクラスを作成する代わりに、PESTでは、単純なPHPファイル內(nèi)のクロージャーを使用してテストを定義できます。
基本的な害蟲(chóng)テストは次のようになります:
test( 'ユーザーはホームページを表示できます'、function(){ $ this-> get( '/') - > assertstatus(200); });
Laravelのテストツールのすべてのパワーを維持しながら、読みやすさと開(kāi)発者のエクスペリエンスを向上させるため、人気を集めています。
したがって、テストしようとしているもの(単一の関數(shù)、HTTPフロー全體、または複雑なフロントエンドの動(dòng)作)であろうと、Laravelには適合するテストタイプがあります。ユニットと機(jī)能のテストではほとんどのケースをカバーしており、夕暮れや害蟲(chóng)などのツールは必要に応じて柔軟性を追加します。
以上がLaravelのテストのさまざまなタイプ(単體テスト、機(jī)能テスト)は何ですか?の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress
リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover
寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類(lèi)リムーバー

Video Face Swap
完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版
中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Java でインターフェイスと抽象クラスを単體テストする手順: インターフェイスのテスト クラスを作成します。インターフェイス メソッドを?qū)g裝するためのモック クラスを作成します。 Mockito ライブラリを使用して、インターフェイス メソッドをモックし、テスト メソッドを作成します。抽象クラスはテストクラスを作成します。抽象クラスのサブクラスを作成します。抽象クラスの正確性をテストするテスト メソッドを作成します。

PHP 単體テスト ツール分析: PHPUnit: 大規(guī)模プロジェクトに適しており、包括的な機(jī)能を提供し、インストールが簡(jiǎn)単ですが、冗長(zhǎng)で遅い場(chǎng)合があります。 PHPUnitWrapper: 小規(guī)模プロジェクトに適しており、使いやすく、Lumen/Laravel に最適化されていますが、機(jī)能が限られており、コード カバレッジ分析は提供されず、コミュニティ サポートも限られています。

Go 関數(shù)の単體テストでは、エラー処理に 2 つの主な戦略があります。1. エラーをエラー タイプの特定の値として表現(xiàn)し、期待値をアサートするために使用します。2. チャネルを使用してエラーをテスト関數(shù)に渡します。これは、同時(shí)実行コードのテストに適しています。実際のケースでは、関數(shù)が負(fù)の入力に対して 0 を返すようにするために、エラー値戦略が使用されます。

パフォーマンス テストでは、さまざまな負(fù)荷の下でアプリケーションのパフォーマンスを評(píng)価します。一方、単體テストでは、単一のコード単位の正確性を検証します。パフォーマンス テストは応答時(shí)間とスループットの測(cè)定に重點(diǎn)を置き、単體テストは関數(shù)の出力とコード カバレッジに重點(diǎn)を置きます。パフォーマンス テストは高負(fù)荷と同時(shí)実行性のある現(xiàn)実の環(huán)境をシミュレートしますが、単體テストは低負(fù)荷とシリアル條件で実行されます。パフォーマンス テストの目標(biāo)は、パフォーマンスのボトルネックを特定し、アプリケーションを最適化することですが、単體テストの目標(biāo)は、コードの正確さと堅(jiān)牢性を確認(rèn)することです。

テーブル駆動(dòng)テストは、テーブルを通じて入力と予想される出力を定義することにより、Go 単體テストでのテスト ケースの作成を簡(jiǎn)素化します。構(gòu)文には次のものが含まれます。 1. テスト ケース構(gòu)造を含むスライスを定義します。 2. スライスをループし、結(jié)果を予想される出力と比較します。実際のケースでは、文字列を大文字に変換する関數(shù)に対してテーブル駆動(dòng)テストが実行され、getest を使用してテストが実行され、合格結(jié)果が出力されました。

Golang 単體テストでアサーションに Gomega を使用する方法 Golang 単體テストでは、Gomega は、開(kāi)発者がテスト結(jié)果を簡(jiǎn)単に検証できるように、豊富なアサーション メソッドを提供する人気のある強(qiáng)力なアサーション ライブラリです。 Gomegagoget-agithub.com/onsi/gomega をインストールする アサーションに Gomega を使用する アサーションに Gomega を使用する一般的な例をいくつか示します。 1. 等価アサーション import "github.com/onsi/gomega" funcTest_MyFunction(t*testing.T){

効果的な単體テスト ケースを設(shè)計(jì)するには、原子的、簡(jiǎn)潔、反復(fù)可能、明確という原則を遵守することが重要です。手順には、テストするコードの決定、テスト シナリオの特定、アサーションの作成、テスト メソッドの記述が含まれます。実際のケースでは、max() 関數(shù)のテスト ケースの作成を示し、特定のテスト シナリオとアサーションの重要性を強(qiáng)調(diào)しています。これらの原則と手順に従うことで、コードの品質(zhì)と安定性を向上させることができます。

PHP 単體テストでコード カバレッジを改善する方法: PHPUnit の --coverage-html オプションを使用してカバレッジ レポートを生成します。 setAccessible メソッドを使用して、プライベート メソッドとプロパティをオーバーライドします。アサーションを使用してブール條件をオーバーライドします。コードレビューツールを使用して、コードカバレッジに関する追加の洞察を取得します。
