2016-11-21 71 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

欢迎:)高兴我可以帮助:) –