2016-11-21 66 views
1

我試圖測試我的註冊表單。測試註冊表失敗,並使用Laravel 5進行密碼確認

我寫這個測試:

public function testUserRegistration() 
{ 
    $response = $this->call('POST', 'auth/register', array(
     '_token' => csrf_token(), 
     'name' => 'toni', 
     'username' => '[email protected]', 
     'password' => 'toni19' 
    )); 

    // Error The given data failed to pass validation. 

    $this->assertEquals(200, $response->getStatusCode()); 
} 

當我運行這個測試時,出現以下錯誤:

錯誤給出的數據無法通過驗證。

我的控制器代碼:

$this->validate($request, [ 
    'name' => 'required|unique:users', 
    'username' => 'required|unique:users,username|email|min:3', 
    'password' => 'required|confirmed|min:5' 
], User::getFormMessages()); 

感謝您的幫助。

+0

我從標題中刪除了[已解決]。接受答案足以將問題標記爲已解決;您不需要採取進一步行動。 –

回答

2

我想你錯過了一個輸入,如:

$response = $this->call('POST', 'auth/register', array(
     '_token' => csrf_token(), 
     'name' => 'toni', 
     'username' => '[email protected]', 
     'password' => 'toni19' 
     'password_confirmation' => 'toni19' 
    )); 

和確認:

$this->validate($request, [ 
    'name' => 'required|unique:users', 
    'username' => 'required|unique:users,username|email|min:3', 
    'password' => 'required|min:5|confirmed', 
    'password_confirmation' => 'required|min:5|same:password' 
], User::getFormMessages()); 

從Laravel docs

證實

驗證字段必須具有匹配字段 foo_confirmation。例如,如果正在驗證的字段是 密碼,則匹配的password_confirmation字段必須存在於 輸入中。

+0

我試過但我有同樣的錯誤。 – amiceli

+0

我在測試函數中更改了傳遞的數據,它現在可用。 感謝您的幫助。 – amiceli

+0

歡迎:)高興我可以幫助:) –