- 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



반응형
Posted by codens