티스토리 뷰

테스팅을 할려고 보면 뭐가 이렇게 안되는게 많은지 모르겠다..

그래도 오늘 극뽁한 기념으로 글로 남겨 둬야징.

 

먼저 phpunit.xml에 

<php>라는 부분이 있는데, 이부분이 테스팅 환경 셋팅하는 것이당!

<php>
        <env name="APP_ENV" value="testing"/>
        <env name="BCRYPT_ROUNDS" value="4"/>
        <env name="CACHE_DRIVER" value="array"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="QUEUE_CONNECTION" value="sync"/>
        <env name="MAIL_MAILER" value="array"/>
        <server name="DB_CONNECTION" value="sqlite"/>		// 추가
        <server name="DB_DATABASE" value=":memory:"/>		// 추가	
        <server name="TELESCOPE_ENABLED" value="false"/>	// 추가
    </php>

마지막 3줄을 추가해줬당. 

그리고 나는 몇날 몇일 <Uncaught Error: Class 'TestCase' not found>오류를 봤다. 네임스페이스를 천번은 확인한것 같다.

 

composer.json에서

    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        },
        "classmap": [
            "tests/TestCase.php",
            "tests/BrowserKitTestCase.php"
        ]
    },

있는지 확인하고

> composer dump-autoload

 

그리고 오류가 아마

<Illuminate\Database\QueryException : could not find driver (SQL: PRAGMA foreign_keys = ON;) > 이런 오류가 떴었다.

이건 php.ini파일을 여는 거시당!

extension 에 주석 되어있다면 주석을 해제하장.

extension=pdo_sqlite
extension=sqlite3

혹시 몰라서 나는 sqlite3도 해제했당. 보통은 pdo-sqlite 만 해제해도 될듯하당.

그리고 또 확인 해 봐야할게

config/database.php 에서 connections부분에서 sqlite가 있는지 혹시나 모르니까 확인해보자.

 'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'url' => env('DATABASE_URL'),
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
            'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
        ],

 

드디어

 

테스팅을 돌리면 결과가 뿅!하고 나온다.

 

나는 비록 실패한 결과가 떴지만 결과가 뜬게 어디냐!!!!! ㅠㅠㅠ

매뉴얼을 얼마나 읽었던가.... 하지만 이러라곤 하지않았지 흙 ㅠㅠㅠ

 

TDD의 험난한 과정을 위해 가즈아!

 

 

더하기.

 

만약 테스트코드 내에 디비에서 가져와야 되는 부분이 있다면 phpunit.xml에서 

<server name="DB_CONNECTION" value="mysql"/>
<server name="DB_DATABASE" value="databaseName"/>

로 변경하고, php.ini에서 

extension=pdo_mysql

주석 해제하자.

 

 

전체 테스트 코드는 아래와 같이 짰다.

 

protected $user, $option;

public function test_same_grade_six_month()
    {
        // 데이터 셋팅
        $this->user = User::findOrfail(230037);
        $this->option = OrderProductOption::findOrFail(53827);
        
        $response = (new OrderSubscriptionRepository)->calculateUserPaymentExpire($this->option, $this->user);

        $this->assertEquals(\Carbon\Carbon::parse('2022-01-14')->endOfDay(), $response);
    }

    public function test_up_grade_six_month()
    {
    	// 데이터 셋팅
        $this->user = User::findOrfail(230037);
        $this->option = OrderProductOption::findOrFail(53828);
       
        $response = (new OrderSubscriptionRepository)->calculateUserPaymentExpire($this->option, $this->user);
        
        $this->assertEquals(\Carbon\Carbon::parse('2022-01-14')->endOfDay(), $response);
    }
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함