Codeceptionを介して既存のルールを使用してLaravel5ルートをテストする

ジョン・ドリアン

Codeceptionライブラリを使用してLaravelアプリケーションのテストを書いています。私はLaravel5モジュールを使用しておりcleanup、すべてのテストがデータベーストランザクション内で実行されるように構成されているため、テストデータベースがテストデータでいっぱいになることはありません。

私がテストしているエンドポイントの1つには、フォームリクエストを介して設定された次の検証ルールがあります。

public function rules()
{
    return ['user_id' => 'required|exists:users,id'];
}

このエンドポイントにPOSTするために作成したテストは、次のとおりです。

public function store(ApiTester $I)
{
    // Create a couple of users
    $users = factory(\App\Models\User::class, 2)->create();

    $I->wantTo('ask someone to be my friend');
    $I->authenticateAs($users[0]);
    $I->sendPOST('users/' . $users[0]->id . '/friendships', [
        'user_id' => $users[1]->id
    ]);
    $I->seeResponseCodeIs(201);
}

このテストは常に失敗します。調査したところ、exists:users,idルールが原因でリクエストが検証に失敗しているため、失敗していることがわかりましたトランザクション内でテストを実行しないようにCodeception設定を変更すると、Laravelのバリデーターは、テストの開始時に作成した2人のユーザーの存在を正常に確認でき、テストに合格します。

だから、私の質問は、データベーストランザクションで各テストをラップする動作を維持し、Laravelのバリデーターがテストで作成したレコードを表示できるようにする方法はありますか?

Shock_gone_wild

問題は、トランザクションがコミットされていない場合、データベーステーブルの元のデータが影響を受けないことです。したがって、トランザクション内で2人のユーザーを作成しますが、それをデータベースに保持するコミットステートメントはありません。したがって、laravel検証ルール「exists」はそれらを見つけることができません(そのルールは特定のuser_idを見つけるためにデータベース要求を行います)。

したがって、あなたの場合、ユーザーはテストする前に存在している必要があります。代わりに移行を使用することをお勧めします。各テスト後にデータベースをリセットする

データベースの移行とシードを使用してテーブルを作成し、テストの終了後にロールバックします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Codeceptionを使用してlaravel5 APIをテストする方法は?

分類Dev

Composercreate-projectを使用して特定のlaravel5バージョンをインストールする

分類Dev

Laravel5を使用してWindowsのローカルホストでcronジョブを使用する方法

分類Dev

Codeceptionを使用して既存のLaravel5.1PHPUnitテストを実行する

分類Dev

Laravel5でEloquentを使用してピボットテーブルを更新する方法

分類Dev

Laravel5のORMEloquentを使用してDBFテーブルにアクセスする

分類Dev

モックを使用したLaravel5メールの単体テスト

分類Dev

Laravel5でスラッグとIDを使用してテーブルを結合する

分類Dev

複数の外部キーを使用してピボットテーブルをクエリする方法Laravel5 Eloquent

分類Dev

Laravel5のキューを使用してメールでパスワードリセットリンクを送信する方法

分類Dev

GoogleクラウドストレージをLaravel5ファイルシステムとして使用するにはどうすればよいですか?

分類Dev

Laravel5チェーンを使用して関連するテーブルデータを取得する方法

分類Dev

AppleScriptを使用して、メールルールを介して電子メールの詳細を含むテキストファイルを作成する

分類Dev

laravel5で入力名を使用してストレージフォルダーとサブフォルダーを作成する方法

分類Dev

PHP + SQL-SQLServerの「CreateTo」スクリプトを使用してPHPを介してテーブルを作成する

分類Dev

Composerを介してLaravelをインストールする際の提案の取得

分類Dev

既存のpackage.jsonを使用してjestをインストールする

分類Dev

laravel5はテーブルとして主キーを使用するToManyに属します

分類Dev

MacPortsを使用して特定のパスを介してモジュールをインストールする

分類Dev

AJAXjQueryを使用して大きなファイルをLaravel5コントローラーに送信すると、空のデータが取得されます

分類Dev

Javascript-ループを介して既存のオブジェクトプロパティに値を追加する

分類Dev

Laravel5で追加のピボットテーブル値を更新します

分類Dev

ピボットテーブルlaravel6を介して2つのテーブルを接続する

分類Dev

forNameを使用して、mainを介してテストモジュールのクラスを取得します

分類Dev

Laravel5の関連テーブルから条件を使用してテーブルをクエリするにはどうすればよいですか?

分類Dev

ES6-'import 'ステートメントのようなES6を使用してカルマを介してJasimeテストをテストする方法

分類Dev

グーグルスクリプトを介して既存のグーグルフォームアイテムを編集する方法

分類Dev

jQueryAJAXを使用してLaravel5の連絡フォームからメールを送信する

分類Dev

openpyxlを使用して既存のExcelテーブルを操作する

Related 関連記事

  1. 1

    Codeceptionを使用してlaravel5 APIをテストする方法は?

  2. 2

    Composercreate-projectを使用して特定のlaravel5バージョンをインストールする

  3. 3

    Laravel5を使用してWindowsのローカルホストでcronジョブを使用する方法

  4. 4

    Codeceptionを使用して既存のLaravel5.1PHPUnitテストを実行する

  5. 5

    Laravel5でEloquentを使用してピボットテーブルを更新する方法

  6. 6

    Laravel5のORMEloquentを使用してDBFテーブルにアクセスする

  7. 7

    モックを使用したLaravel5メールの単体テスト

  8. 8

    Laravel5でスラッグとIDを使用してテーブルを結合する

  9. 9

    複数の外部キーを使用してピボットテーブルをクエリする方法Laravel5 Eloquent

  10. 10

    Laravel5のキューを使用してメールでパスワードリセットリンクを送信する方法

  11. 11

    GoogleクラウドストレージをLaravel5ファイルシステムとして使用するにはどうすればよいですか?

  12. 12

    Laravel5チェーンを使用して関連するテーブルデータを取得する方法

  13. 13

    AppleScriptを使用して、メールルールを介して電子メールの詳細を含むテキストファイルを作成する

  14. 14

    laravel5で入力名を使用してストレージフォルダーとサブフォルダーを作成する方法

  15. 15

    PHP + SQL-SQLServerの「CreateTo」スクリプトを使用してPHPを介してテーブルを作成する

  16. 16

    Composerを介してLaravelをインストールする際の提案の取得

  17. 17

    既存のpackage.jsonを使用してjestをインストールする

  18. 18

    laravel5はテーブルとして主キーを使用するToManyに属します

  19. 19

    MacPortsを使用して特定のパスを介してモジュールをインストールする

  20. 20

    AJAXjQueryを使用して大きなファイルをLaravel5コントローラーに送信すると、空のデータが取得されます

  21. 21

    Javascript-ループを介して既存のオブジェクトプロパティに値を追加する

  22. 22

    Laravel5で追加のピボットテーブル値を更新します

  23. 23

    ピボットテーブルlaravel6を介して2つのテーブルを接続する

  24. 24

    forNameを使用して、mainを介してテストモジュールのクラスを取得します

  25. 25

    Laravel5の関連テーブルから条件を使用してテーブルをクエリするにはどうすればよいですか?

  26. 26

    ES6-'import 'ステートメントのようなES6を使用してカルマを介してJasimeテストをテストする方法

  27. 27

    グーグルスクリプトを介して既存のグーグルフォームアイテムを編集する方法

  28. 28

    jQueryAJAXを使用してLaravel5の連絡フォームからメールを送信する

  29. 29

    openpyxlを使用して既存のExcelテーブルを操作する

ホットタグ

アーカイブ