티스토리 뷰
테스팅을 할려고 보면 뭐가 이렇게 안되는게 많은지 모르겠다..
그래도 오늘 극뽁한 기념으로 글로 남겨 둬야징.
먼저 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
- 프로그래밍은디버거부터시작이다
- twoseven.kr/0410
- Testing
- 더미데이터도유형이있어요
- gcp
- 배열을_이쁘게
- fmf
- 엘라스틱서치한글성공!
- 테스팅환경
- UTF8
- twoserven.kr/0410
- JSON으로도
- xml로도
- 테스팅
- PhpStorm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |