Laravel Package Development – e02 – Getting started with PHPUnit, Composer and PSR4 Autoloading

좋아, 시작하자 그래서 우리는 프로젝트 이름이 언론에 있음을 알고있다

그래서 디렉토리를 만들고 그것을 Press라는 이름으로 만들어 봅시다 그 디렉토리로 바꾸자 이제 'git init'명령에 익숙 할 수도 있지만 그 사실을 알지 못할 수도 있습니다 composer에는 init 명령이 있으며이 명령을 실행하면 실제로 아주 기본적인 composerjson 설정을 만드는 과정을 안내합니다

파일 자, 내 공급 업체가 vicgonvt이고 패키지 이름이 언론입니다 설명에서, 설명을 쓰자 완전한! 작성자가 정확하므로 입력 할 수 있습니다 최소 안정성, 그 비워 두자

패키지 유형에서이 항목을 비워 둡니다 에 대한 라이센스를 얻으려면 여기에 적절한 라이센스를 입력하십시오 제 경우에는 MIT를 입을 것입니다 'composer init'을 사용하면 대화 형으로 의존성을 요구할 수 있습니다 지금, 우리는 이런 식으로하지 않을 것이지만 당신은 할 수 있습니다

그래서 마침내 우리가 한 일을 미리보고 확인하기 위해 enter를 누르십시오 자, PHPStorm에서 이 composerjson 파일을 살펴보고 이름, 설명, 라이센스 및 저자가 있으며 현재로서는 필요한 패키지가 없습니다 그걸 시작합시다 터미널로 돌아가서 우리는 'composer require – -dev orchestra / testbench' 지금, 테스트 벤치 실제로 가져올 것입니다 Laravel 프로젝트에서 모두 익숙한 동일한 환경에서 그것은 우리가 당신과 같은 방식으로 패키지를 개발할 수있게 해줄 것입니다

일반 Laravel 응용 프로그램입니다 이제 여기로 돌아가고 싶습니다 그리고 저는 보여주고 싶습니다 당신에게 패키지의 일부를 가져옵니다 무엇보다도 Laravel 프레임 워크, 익숙한 다른 패키지는이 심포니 중 일부입니다 PHPUnit뿐 아니라 컴포넌트도 제공합니다

이제 설치가 완료되었습니다 앞서 git 저장소를 초기화하십시오 'git init'그리고 우리는 비어있다 저장소 '자식 상태'우리는 여기에 몇 가지 디렉토리가 있습니다 이제, 당신은 그렇지 않을 수도 있습니다

벤더 디렉토리와 'idea'디렉토리와 이것은 Laravel이 실제로 아주 좋은 'gitignore'와 함께 배송되기 때문입니다 지금, 'git ignore'파일은 실제로 git에게 특정 디렉토리 나 파일을 무시하도록 지시합니다 버전 제어가 필요하지 않기 때문에이 작업을 수행합니다 소지품 벤더 디렉토리와 마찬가지로, 작곡가와 '

idea'디렉토리, 필자의 경우 PHPStorm 파일이므로 필요하지 않습니다 소스 컨트롤 내부 Laravel GitHub 페이지를 방문하여 그 자식은 파일을 무시합니다 이제이 파일을 보면 'idea'와 ' 납품업자 및 다른 2 개의 전화 번호부 여기에서 그래서 나가 실제로하고 싶은 무엇을 이 전체 파일을 프로젝트에 가져 오십시오

나는 모든 것을 선택할거야 그것을 복사하여 PHPStorm로 다시 전환하고 새 파일을 만듭니다 새로운 파일 이 파일의 이름을 'gitignore'로 지정하면 붙여 넣기 만하면됩니다

저장, '자식 상태'그리고 거기에 우리가 갈 파일은 우리가 준비가 완료됩니다 먼저 'git add'를 커밋하십시오 'git commit -m 최초 커밋'완벽한 우리는 커다란 진전을 이루고 있습니다 디렉토리 구조 이것은 약간되는 주제 중 하나입니다 확실하지 않기 때문에 패키지 개발을 시작할 때 복잡해집니다

파일을 어디에 두어야 할 지 확신하지만, 여기에는 쉬운 접근법이 있습니다 우리가 취할 접근법은 정확히 똑같은 디렉토리를 사용하는 것입니다 우리 Laravel 패키지에 익숙한 구조 다시 가자 한 번 더 Laravel GitHub 페이지를 방문하여 디렉토리 구조를 살펴보십시오

그래서 우리는 app 디렉토리, 부트 스트랩, 설정, 라우트, 스토리지, 테스트 등을 가지고 있습니다 기타 등등 이 똑같은 디렉토리 구조를 예외가 아니라 앱 디렉토리 대신 실제로 'src'라고 부릅니다 근원을 나타냅니다 패키지 커뮤니티에서는 모든 사람들이 주 디렉토리는 'src'이어야하므로 우리는 그 대회에 참석할 것입니다

와 다시 말하면 우리 터미널로 돌아가서 디렉토리 'src'디렉토리를 만들고 두 개의 디렉토리를 만들자 우리의 테스트 테스트 파일로 시작하면 내부에서 테스트 기능 테스트와 단위 테스트가 있습니다 다시 PHPStorm에서 테스트 디렉토리와 소스를 살펴볼 수 있습니다

그것은이 시점에서 물론 비어 있습니다 자, 우리가 활용하지 못하는 한가지 방금 자동 로딩이되었으므로 작곡가 인 json 파일로 돌아가 봅시다 몇 가지 항목을 추가하십시오 첫 번째 것은 '자동로드'입니다 우리는 psr-4에서이 작업을 수행 할 것입니다

우리가 알아야 할 첫 번째 것은 우리 네임 스페이스가 될 것입니다 내 사건 'vicgonvt \ press \'그리고 우리는 또한 그것을 말해야 만합니다 메인 항목 point는 우리의 경우에 'src'디렉토리 인 네임 스페이스를위한 것입니다 우리의 테스트를 자동로드하므로, 우리는 또 다른 항목 'autoload-dev'를 추가 할 것입니다 또한 psr-4와 약간 다른 네임 스페이스 'vicgonvt \ press \ tests \'그래서, 그 진입 점은 어디입니까? 글쎄, 그거야

우리의 테스트 디렉토리에 있어야하고 그게 다야! 이 시점에서 우리는 자동 로딩을하고 있습니다 PHPUnit을 실행할 준비가되었습니다 테스트 해 봅시다 'phpunit'과 오우 소년! 그것은 계획대로 가지 않았습니다! 권리? 우리는 'phpunit'과 모든 일을하는 데 익숙하지만 PHPUnit 만 사용합니다 실제로 많은 옵션이 있습니다

이제는 이러한 옵션을 볼 수없는 이유가 왜냐하면 Laravel은 실제로 PHPUnit에게 무엇을 지시하는 작은 파일을 가지고 있기 때문입니다 해야 할 것 이 파일을 살펴 보겠습니다 GitHub 저장소로 돌아 가면 다음 위치에 파일이 있습니다 여기에 'phpunitxml'이 있는데, 우리가 열면 실제로 모든 옵션이 보입니다

여기에는 유닛 테스트 스위트와 기능 테스트 스위트가 포함되어 있습니다 'gitignore'와 동일합니다 실제로이 전체 파일을 프로젝트에 가져와 봅시다 나는 갈거야

새 파일을 만들고 난 그것을 'phpunitxml'이라고 부를거야 PHPUnit은 실제로 이 파일을 찾을거야, 'phpunit'을 실행할 때, 그렇게 해보자 이 파일을 살펴볼 수는 있지만 기본적으로이 파일은 모두 옵션을 선택하면 테스트 스위트 섹션이 생성 된 다음 어떤 파일이 실제로 테스트 될지 그리고 마지막으로 우리는 환경 파일 우리는 지금 이것을 필요로하지 않기 때문에 실제로 지울 것입니다

그들과 당신이 변경해야 할 유일한 다른 것은 app 디렉토리 대신에있다 그것은 우리의 'src'디렉토리가 될 것입니다 저장을 클릭하고 iTerm으로 다시 전환하고 한 번 더 'phpunit'을 실행하면 테스트가 실행됩니다 마지막 하나 내가하고 싶은 일은, 우리가 할 수있는 아주 간단한 테스트를 작성하는 것입니다 정말로 뭔가 테스트

그래서 저는 새로운 PHP 클래스를 만들겠습니다 우리는 그것을 호출 할 것입니다 초기 테스트, 내 네임 스페이스 'vicgonvt Press Tests' 당신은 단순히 'php artisan make : tests'를 실행하는 데 익숙 할 수 있습니다 처음부터 테스트를 설정하는 데 익숙하지만 한 가지 알고있는 것은 모든 테스트가 테스트 케이스를 확장한다는 것이 Laravel의 경우에 있습니다 일반적으로 Laravel 프레임 워크의 테스트 케이스를 확장하지만 패키지를 개발할 때 우리는 실제로 테스트 케이스를 확장해야합니다

오케스트라 테스트 벤치에서 그리고 여기 있습니다, 전체 네임 스페이스는 'orchestra testbench testcase'입니다 여기까지 가져 왔고 우리의 첫 번째 간단한 테스트를 작성해 보겠습니다 자, 하나 내가 여기서주의하기를 바라는 것은 우리가 당신이 사용하는 모든 주장을하는 방법입니다 이미보고 있기 때문에, 우리는 진실을 주장하고 진실을 말하고 물론, 그렇게 될 것입니다 iTerm으로 돌아가서 'phpunit'을 한 번 더 실행 해 보겠습니다

시간이 지나면 우리는 녹색 테스트를 받게됩니다