62호 라라벨 6.0.4에 추가된 기능 free

2019-09-27

라라벨 6.0.4가 릴리즈 되었습니다. 패치 릴리즈인데도 기능이 추가되네요. SemVer 인듯 아닌듯.


TestResponse에 assertJsonPath 추가


특정 JSON 경로에 해당하는 값을 확인할 수 있는 매서드가 추가되었습니다.


$this->getJson(route('api.post.show', [$post->id]))
->assertJsonPath('tags', [])
->assertJsonPath('comments.0.user.username', 'ecrmnn')
->assertJsonPath('comments.*.body', [
'First!',
'This is my comment',
]);

assertJsonPath를 쓰면 아래와 같은 장점이 있다고 합니다.



  • 임시 변수를 만들 필요가 없음 (assertEquals의 단점 보완)

  • 특정 사용자에 맞게 확인할 수 있음 (assertJsonFragment의 단점 보완)

  • 불필요한 데이터를 쓰지 않아도 됨 (assertExactJson의 단점 보완)


저는 앞으로 JSON 테스트 할 때 가장 먼저 assertJsonPath 사용을 고려하게 될 것 같네요!


Eloquent Builder에 매크로 관련 매서드 3개 추개


hasMacro(), hasGlobalMacro(), getGloabalMacro()가 추가되었습니다. hasMacro(), hasGlobalMacro()는 매크로가 있는지 여부를 확인합니다. 테스트와 방어적 코딩에 유용할거라 하네요.


BelongsToMany 관계에 getPivotColumns 매서드 추가


pivot 컬럼 값을 가져오는 기능은 있었는데, 어떤 pivot 컬럼들이 있는지 조회하는 기능이 없었나보네요.


스케쥴 테스크용 이벤트 추가


기존에 커맨드가 시작되고 끝날 때 발생하는 이벤트가 있긴했는데 (Illuminate\Console\Events\CommandStarting, Illuminate\Console\Events\CommandFinished) 편의를 위해 스케쥴에 의해 실행되는 커맨드용 이벤트만 따로 분리했다고 합니다.


추가된 이벤트는 아래 두가지입니다.



  • Illuminate\Console\Events\ScheduledTaskStarting

  • Illuminate\Console\Events\ScheduledTaskFinished


커맨드 인수 및 옵션을 객체로 정의 가능


커맨드의 인수나 옵션을 정의할 때 "배열" 대신 객체(InputArgument 혹은 InputOption)를 사용할 수 있게 됐습니다.


Before:


protected function getArguments() 
{
return [
['name', InputArgument::REQUIRED, 'the argument\'s description', 'default value'],
];
}

After


protected function getArguments() 
{
return [
new InputArgument('name', InputArgument::REQUIRED, 'the argument\'s description', 'default value'),
];
}

장점은 배열을 구성하는 순서를 확인하기 위해 문서를 참조하지 않아도 되는 것이라고 하네요.


1일 1식 라라벨 62호

2019년 9월 27일

유료 구독자 전용 레터입니다.

한 달 1만원으로 매일 라라벨 관련 메일 받아보시고 과거 메일도 열람하세요. 일반 구독으로 공개글만 받아보실 수도 있습니다.

구독하기 버튼을 눌러주시면 구독과 동시에 xly에도 가입됩니다.

이현석

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