[라라벨] PHPUnit (2) - HTTP 웹 테스트 예제
- PHPUnit HTTP Web test example
//=================
./tests/Feature/WebTest.php 소스
<?php
namespace Tests\Feature;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
class WebTest extends TestCase
{
    public function testBasicTest()
    {
        $response = $this->get('/');
        $response->assertStatus(200);
    }
}
//=========
* 검사 실행
./vendor/bin/phputil tests/Feature/WebTest.php
//====================
./tests/Feature/WebDuskTest.php 소스
<?php
use Tests\DuskTestCase;
use Laravel\Dusk\Browser;
use Illuminate\Foundation\Testing\DatabaseMigrations;
class WebDuskTest extends DuskTestCase
{
    public function testBasicExample2()
    {
        $this->browse(function (Browser $browser) {
            $browser->visit('/')
                    ->assertSee('Laravel 5');
        });
    }
}
//=========
* 검사 실행
./vendor/bin/phputil tests/Feature/WebDuskTest.php
    //=============
    - 에러 메시지
Error: Call to undefined method Tests\Feature\ExampleTest::visit()
    - 해결 방법
dusk 패키지 설치
//======================
* Dusk 패키지 설치
composer require --dev laravel/dusk
    //============
    - 패키지 설치 에러
    laravel/dusk v4.0.0 requires illuminate/support ~5.6 
    - 해결방법 : 낮은 버전을 설치한다.
composer require --dev laravel/dusk:2.*
* dusk 등록
php artisan dusk:install
    - tests/Browser 폴더가 생성됨
    - dusk 실행을 위한 설정
dusk는 config/app.php 파일을 참조한다.(.env 아님)
    예)
    'url' => 'http://localhost:8000',
    'env' => env('APP_ENV', 'local'),
//=======================
* PHPUnit 테스트 실행
./phpunit tests/Browser/ExampleTest
    - php artisan dusk 로 실행하면 안됨 - Test.php를 찾는 것 같음, 시간 오래 걸림
        - 만약 실수 실해 했다면 실행된 프로세스를 모두 종료 시켜야 함
            - chromedriver-win.exe, chrome, "cmd /V:ON /E:ON /D /C ..."
    //=============
    - 에러 메시지
Facebook\WebDriver\Exception\UnknownServerException: unknown error: unhandled inspector error: {"code":-32000,"message":"Cannot navigate to invalid URL"}
    - 해결 방법
config/app.php 파일에서 url 항목을 제대로 적어 준다
    예)    'url' => 'http://localhost:8000',
    //===========
    - 에러 메시지
Exception: It is unsafe to run Dusk in production.
    - 해결 방법
config/app.php 파일에서 env 항목을 local로 설정
    'env' => env('APP_ENV', 'local'),
//=====================================================
//참고
https://semaphoreci.com/community/tutorials/getting-started-with-phpunit-in-laravel