2013-08-23 74 views
0

應用程序/控制器/ SecurityController.php單元測試laravel 4控制器傳遞JSON有效載荷

class SecurityController extends Controller { 

    public function login() 
    {  
     $payload = file_get_contents("php://input"); 
     $payload = json_decode($payload); 

     $input = array('mail' => $payload->mail, 
         'password' => $payload->password, 
       ); 


     if (Auth::attempt($input)) 
     { 
     } 
    } 
} 

應用程序/測試/ SecurityTest.php

class SecurityTest extends TestCase { 
    public function testLogin() 
    { 
     $data = array(
      'mail' => '[email protected]', 
      'password' => 'mypasswprd', 
     ); 

     $crawler = $this->client->request('POST', '/v2/login', $data); 
    } 

當運行PHPUnit的我得到這個錯誤: {「error」:{「type」:「ErrorException」,「message」:「嘗試獲取非對象的屬性」,「file」:app/controllers/SecurityController.php「,」line「:20} }

+0

你有沒有作出任何努力來調試到現在?你嘗試了什麼? –

+0

控制器正在接收一個空的有效載荷 – mookofe

回答

1

你爲什麼要用file_get_contents("php://input")? Laravel允許您使用Input:get()方法,這是一種簡單的方法從窗體或json中檢索輸入數據。我敢打賭這將會更具可測性。

你的控制器應該是這樣的:

class SecurityController extends Controller { 

    public function login() 
    {  
     $input = array(
      'mail'  => Input::get('mail'), 
      'password' => Input::get('password'), 
     ); 

     if (Auth::attempt($input)) 
     { 
     } 
    } 
}