git 사용시 커밋하지 않은 변경사항들을 다른 브랜치에 커밋하기

오늘 한참 작업을 하고 나서 보니, master 브랜치에서 작업을 하고 있었더군요. 뜨어! 지금까지 작업한 내용을 다른 브랜치(제 경우에는 develop 브랜치)에 커밋할 순 없나 찾아보니 다행히 방법이 있었습니다. stash를 사용하는 방법입니다.

git stash // 커밋하지 않은 변경사항을 임시로 저장한다.
git checkout develop // develop 브랜치로 변경한다.
git stash pop // 임시로 저장한 변경사항을 복원한다.

도움을 얻은 글은 How to commit my current changes to a different branch in git [duplicate] 입니다.
stash에 대한 더 자세한 사항은 Git 도구 – Stashing 에 잘 안내되어 있으니 참고하세요.
 

leaderboard-728x90

 

Laravel 마이그레이션 작성시 index 존재 여부 확인하는 방법

Laravel에 테이블이나 컬럼이 존재하는지 확인하는 메소드는 있는데 index 존재 여부를 확인하는 메소드는 지원하지 않아서 다소 아쉬운 면이 있었습니다. 찾아보니 doctrine schema manager 를 사용하면 확인이 가능하더군요. Laravel로 마이그레이션 작성해보신 분들은 아래 예제 코드 보시면 바로 이해가 되실거에요. 아마 doctrine/dbal 패키지를 설치가 필요할 거에요.(확인해보진 않았습니다 ^^ 어차피 renameColumn 하려면 필요하니까 걍 설치 고고)

Schema::table('articles', function($table)
{
    $conn = Schema::getConnection();
    $dbSchemaManager = $conn->getDoctrineSchemaManager();
    $doctrineTable = $dbSchemaManager->listTableDetails('articles');

    if($doctrineTable->hasIndex('title')){
        $table->dropIndex('title');
    }
});

 

leaderboard-728x90

 

Laravel 컨트롤러 테스트 작성 요령

테스트를 작성할 때 무엇을 테스트 할 것인지를 결정하는 것이 참 어려운 것 같습니다. Jeffrey Way 의 조언을 따르니 컨트롤러 테스트 작성에 꽤 도움이 되네요.

“Controller tests should verify responses, ensure that the correct database access methods are triggered, and assert that the appropriate instance variables are sent to the view.”

다음에서 발췌: JeffreyWay. ‘Laravel Testing Decoded.’ iBooks.

  1.  response 를 확인한다.
    1. $this->assertResponseIsOk() 혹은 $this->assertRedirectedTo(‘/PATH’) 등으로 확인할 수 있습니다.
  2. 원하는 모델의 메소드가 작동되었는지 확인한다.
    1. Mockery 의 shouldReceive 로 확인할 수 있습니다.
  3. 뷰에 데이터를 잘 넘겼는지 확인한다.
    1. $this->assertViewHas(‘변수명’) 으로 확인할 수 있습니다.

leaderboard-728x90

 

Laravel 테스트 작성중 POST로 리퀘스트 전송시 응답으로 200이 아닌 500이 온다면

csrf 토큰 때문입니다.

app/Http/Middleware/VerifyCsrfToken.php 를

public function handle($request, Closure $next)
{
    if ('testing' !== app()->environment()){
        return parent::handle($request, $next);
    }

    return $next($request);
}

이렇게 수정해서 test 환경에서는 토큰을 확인하지 않도록 해주는 방법이 있습니다.

다른 더 좋은 방법들도 있을거 같아요. 좀 찾아봐야겠습니다. ㅎㅎ
 

leaderboard-728x90