2013-08-23 2 views
0

приложение/контроллеры/SecurityController.phpUnit тест 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": "Попытка получить свойство не-объекта", "файл": приложение/контроллеры/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)) 
     { 
     } 
    } 
} 
Смежные вопросы