laravel test 하기
test 만들기
php artisan make:test UserTest
테스트 작성
<?php use Illuminate\Foundation\Testing\WithoutMiddleware; use Illuminate\Foundation\Testing\DatabaseTransactions; class ExampleTest extends TestCase { /** * A basic functional test example. * * @return void */ public function testBasicExample() { $this->visit('/') ->see('Laravel 5') ->dontSee('Rails'); } }
다음 명령어로 구동
phpunit
Mocking
Cache 등의 Facade 사용시 Mockery 로 목킹을 해줘야 정상 동작함.
<?php class FooTest extends TestCase { public function testGetIndex() { Cache::shouldReceive('get') ->once() ->with('key') ->andReturn('value'); Cache::shouldReceive('has') ->once() ->with('key') ->andReturn('true'); $this->visit('/users')->see('value'); } }
mocking 시 app 에서 호출 안 된 코드를 mocking 하면 에러가 발생함. (Ex: Cache::has('key') 를 호출하는 부분이 실제 app 에 없는데 위와 같이 mocking 할 경우)
CI 연동
- Plan 생성
- "Source checkout" Job 추가
composer install Job 생성
composer install --no-interaction --prefer-dist --no-suggest
- phpunit 연동. bamboo 는 command 의 arg 가 없으면 안 되므로 아래처럼 -c phpunit.xml 추가
- phpUnit 이 성공했으면 deploy 하도록 envoy Job 추가
- Plan 실행!
CI 에서 PHPunit을 실행할 경우 APP_KEY 를 못 찾으므로 phpunit.xml 에 다음과 같이 APP_KEY 를 설정해야 함.
<php> <env name="APP_KEY" value="base64:IpDEx1l9abRRaIY+86ZcTQDiTpR2ZRxienH5anP/nRE="/> </php>