102호. @see로 테스트에 테스트 대상을 링크하기 free

2019-12-26

안녕하세요. 즐거운 크리스마스 보내셨나요? 저는 키보드에 손도 못대봐서 조금은 아쉬운 크리스마스였습니다. 미쳤나봐요 ㅎㅎ.


오늘은 아주 간단한 테스트 관련 팁을 하나 들고 왔습니다. 제이슨 맥크레리트윗으로 공유해준 내용을 정리해봤어요.


@see 로 테스트에 테스트 대상 링크하기


어느새 제가 PHPStorm을 쓴 지도 5년이 넘은 것 같아요. 기능을 엄청 잘 활용하는 편은 아니라고 생각했는데, 몇 해 전에 패스트 캠퍼스에서 강의할 때 수강생의 코드를 봐주느라 다른 에디터를 써보니 안되는게 많아서 꽤 답답하더군요. 의외로 PHPStorm의 편의 기능을 알게 모르게 써왔던 거 같아요. 편한 줄도 모르고 말이죠.


그 중에서 가장 답답했던 것이 바로 클래스 파일로 이동하는 거 였어요. 코드를 해석하기 위해 이리저리 코드를 넘나들며 봐야하는데 클릭해서 바로 이동하는게 안되니 너무 불편하더라고요. 그래서 그 이후부터는 누군가 에디터 혹은 IDE를 물어보면 최소한 네비게이션은 지원하는 것을 쓸 것을 권하고 있습니다.


오늘의 팁은 IDE의 네비게이션 기능을 더 잘 활용할 수 있게 해주는 것이에요. 바로 테스트를 작성할 때 테스트 대상을 @see 어노테이션으로 표기하는거에요. 아래는 실제로 xly.kr에 있는 테스트 매서드 입니다.


<?php

namespace Tests\Feature;

...
use App\Http\Controllers\PostController;

class PostTest extends TestCase
{
use RefreshDatabase, WithFaker;

/**
* @see PostController
*/
public function test_only_admin_can_access_index()
{
// 게스트 접근 금지
$this->get('/posts')
->assertStatus(302);

// 이하 생략
}

이 테스트가 어떤 파일과 관련있는지 확인하려면 테스트의 내용에서 어떤 엔드포인트에 대한 테스트인지 확인하고 이에 해당하는 컨트롤러를 알아내야 합니다. 위와 같이 @see PostController를 붙여주면 나중에 이 코드를 보는 사람이 따로 찾아볼 필요 없이 PostController를 찾아보면 되는구나 하고 알 수 있습니다. 물론 클릭하면 바로 PostConroller로 이동할 수도 있고요.


클래스 뿐만 아니라 매서드나 프로퍼티도 @see 어노테이션으로 지정할 수 있습니다.


/**
* @see PostController::index()
*/
public function test_only_admin_can_access_index()
{
...
}

이렇게 매서드까지 적어주면 더욱 더 명쾌해지겠지요. 당연하게도 매서드를 클릭하면 해당 매서드로 이동하니 찾아가기도 쉽습니다.


어찌보면 매 테스트마다 @see 어노테이션을 적어주는게 귀찮아 보일 수도 있을 것 같아요. 하지만 제 생각엔 당장은 아주 조금 귀찮지만 나중에 아주 덕을 보는 행위가 아닌가 싶어요.


저는 놓치지 않고 적어주기 위해 아예 라이브 템플릿(PHPStorm이 제공하는 코드 자동완성 기능의 일종으로 원하는 코드 뭉치를 약어로 등록해서 사용할 수 있음)에 @see를 박아버렸습니다. ㅎㅎ


/**
* @see
* @test
*/
public function $TESTNAME$(){

}

참고로 라이브 템플릿에 관심있으신 분들은 Be Awesome in PHPStorm, Episode 7 Live Template 영상 한 번 보셔요.


그럼 오늘도 즐거운 하루 되세요!


1일 1식 라라벨 102호

2019년 12월 26일


이현석

메쉬 코리아 개발자. 바쁜 팀장님 대신 알려주는 신입 PHP 개발자 안내서를 쓰고, 클린 아키텍처 인 PHP를 번역했습니다. 2020년에 출간될 Laravel Up & Running 2nd Edition을 번역하고 있습니다.