私はLaredvelアプリケーションのテストを、Codeceptionライブラリを使用して作成しています。私はLaravel5 moduleを使用しており、cleanup
で構成されています。つまり、すべてのテストがデータベーストランザクション内で実行されるため、テストデータベースがテストデータで満たされません。Codeceptionを使用して存在規則を持つLaravel 5ルートをテストする
public function rules()
{
return ['user_id' => 'required|exists:users,id'];
}
次のように私はこのエンドポイントに投稿するように書かれてきたテストは次のとおりです:
私はテストがフォーム要求を経由して、それに対して設定し、次の検証ルールを持っているんだ、エンドポイントのワン
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のバリデータで確認できるようにする方法はありますか?
私はまったく同じ問題を抱えています。何か助けていただければ幸いです – Fabrizio
あなたの質問にスイート構成を追加できますか? – Naktibalda