我正在使用Codeception庫爲我的Laravel應用程序編寫測試。我正在使用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的驗證器可以成功查看我在測試開始時創建的兩個用戶的存在,並且測試通過。
所以,我的問題是,是否有任何方法可以維護將每個測試包裝在數據庫事務中的行爲,並讓Laravel的驗證程序能夠查看我在測試中創建的記錄?
我有完全相同的問題任何幫助,將不勝感激 – Fabrizio
你可以添加套件配置到你的問題? – Naktibalda