2017-01-09 8 views
1

Я пытаюсь настроить phpunit-тесты для проекта с Laravel 5.1.40 (LTS), php 5.6.28 и phpunit 4.8.27. Простите, если эта проблема была решена раньше, но я ничего не мог найти.Laravel test phpunit press NotFoundHttpException

public function testAdminLogin() 
{ 
    $this->visit('/auth/login') 
     ->type('[email protected]', 'email') 
     ->type('1234567890', 'password') 
     ->press('Login'); 
} 

Там, кажется, проблема с press('STRING') как с <button> и <input>, как кнопки отправки. Ниже приведено сообщение об ошибке.

1) ExampleTest::testAdminLogin 
A request to [http://localhost/auth/login] failed. Received status code [500]. 

C:\xampp\htdocs\project\vendor\laravel\framework\src\Illuminate\Foundation\Testing\InteractsWithPages.php:165 
C:\xampp\htdocs\project\vendor\laravel\framework\src\Illuminate\Foundation\Testing\InteractsWithPages.php:63 
C:\xampp\htdocs\project\vendor\laravel\framework\src\Illuminate\Foundation\Testing\InteractsWithPages.php:85 
C:\xampp\htdocs\project\vendor\laravel\framework\src\Illuminate\Foundation\Testing\InteractsWithPages.php:684 
C:\xampp\htdocs\project\vendor\laravel\framework\src\Illuminate\Foundation\Testing\InteractsWithPages.php:671 
C:\xampp\htdocs\project\tests\ExampleTest.php:52 
C:\xampp\php\pear\PHPUnit\TextUI\Command.php:176 
C:\xampp\php\pear\PHPUnit\TextUI\Command.php:129 

Однако, когда я изменить <button> тег к <a> тегу, добавить идентификатор к нему, и заменить press(STRING) функции с функцией click(ID), тест пройден. Я мог бы изменить <button> на <a>, но это будет только временное исправление, и будущие случаи могут не позволить изменять тег.

Ниже представлена ​​HTML-форма с тегом <button>.

<form action="/auth/login" method="POST" class="form-horizontal"> 
    <div class="form-group"> 
     <label for="email" class="col-sm-4 control-label">E-Mail</label> 
     <div class="col-sm-6"> 
      <input type="email" name="email" class="form-control" value="{{ old('email') }}" autocomplete="off"> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label for="password" class="col-sm-4 control-label">Password</label> 
     <div class="col-sm-6"> 
      <input type="password" name="password" class="form-control" autocomplete="off"> 
     </div> 
    </div> 
    <div class="form-group"> 
     <div class="col-sm-offset-4 col-sm-6"> 
      <button type="submit" class="btn btn-default btn-login">Login</button> 
     </div> 
    </div> 
</form> 
+0

Используете ли вы 'Auth :: routes()' или определяете маршруты входа/регистрации вручную? –

+0

Я использую версию laravel 5.1, где она определена вручную. –

ответ

0

Вы сказали, что задали маршруты auth вручную. В этом случае маршрут POST вы должны иметь для отправки формы регистрации:

Route::post('auth/login', .... 

Он работает в a href потому что он посылает GET запрос, для которого у вас есть маршрут. Форма отправляет запрос POST по умолчанию.

+0

Этот файл определен в файле маршрутов. Я подозреваю, что что-то теневое происходит либо с переадресацией, либо с ошибкой с функцией пресса. Поскольку функция click передает тест, как я писал в вопросе –