2017-01-20 5 views
1

작성된 독점적 인 프레임 워크에 작성자와 PHPSpec을 추가하고 있지만 테스트 할 클래스가있을 때 PHPSpec을 전역 네임 스페이스와 함께 사용할 수 없습니다. psr-4를 사용하여 정의해야하는 비표준 디렉토리에 있습니다.네임 스페이스가없고 psr-4가없는 PHPSpec을 구성하는 방법

/root 
    /spec 
     /classnameSpec.php 
    /classes 
     /autoload 
       /classname.php 

자동로드 디렉토리는 응용 프로그램의 코어 클래스로 가득하고 그들이 지금 여기를 유지해야 그들은 있어서는 안, 다음과 같이 프로젝트에 알고 있어야합니다 파일 구조는 PHPSpec이 사용하는 default/src 디렉토리.

는 나는이 (부품) 작곡가 파일

{ 
"require": { 
    "phpspec/phpspec": "3.2.2" 
    }, 
    "autoload": { 
    "psr-4": { 
     "Core\\": "classes/autoload" 
    } 
    } 
} 

이 phpspec.yml 파일과 네임 스페이스를 사용하여 작업있어 :

suites: 
    autoload_suite: 
    namespace: 'Core' 
    spec_prefix: '' 
    spec_path: ./spec 
    psr4_prefix: 'Core' 
    src_path: classes/autoload 

하지만에 네임 스페이스를 추가하는 필요로 할 모든 필자가 기존 클래스를 테스트 할 수있게하려면 기존 클래스를 사용하십시오.

PHPSpec 문서는 yml 파일에 네임 스페이스 속성을 두지 않음으로써 null 네임 스페이스를 가질 수 있다고 제안하지만 어떤 조합을 시도해도 오류가 발생합니다.

내가 행복하게 사양 폴더에 테스트 클래스를 생성하지만 phpspec를 실행할 때 내가 얻을

phpspec desc classname 

작업을 수행 할 때 : 나는 널 (null)로 두 속성을 떠나는 시도했습니다

[InvalidArgumentException]       
    PSR4 prefix doesn't match given class namespace. 

, '', \\, "\\", "\\", \ 등을 제거하고 둘 다 제거하지만 아무 것도 작동하지 않습니다. 내가 사용할 수있는 속성의 특정 조합이 있습니까? 아니면 처음에 모든 것에 네임 스페이스를 추가해야 할 필요가 있습니까?

답변

0

나는 내가 PHPSpec Github에서 문제 페이지에 Unfunco부터 모색 대답을 얻었다 :

는 (클래스/자동로드 나는 "\"하는 내가 작곡가의 PSR-4 속성을 변경 한 점에 유의해야한다). 단순히 null 문자열로 설정하지 않고 yml 파일에서 속성을 완전히 생략해야한다는 것을 알게되었습니다. ,

{ 
     "require": { 
     "phpspec/phpspec": "3.2.2" 
     }, 
     "autoload": { 
      "psr-4": { 
       "": "classes/autoload" 
     } 
    } 

그리고 YML 파일이 :

suites: 
    autoload_suite: 
    src_path: classes/autoload 

그래서 작곡가 파일은 다음과 같다