CI 묻고 답하기

제목 phpunit관련 질문 드립니다(어제에 이어서 오늘도...)
글쓴이 해달봉 작성시각 2014/08/27 09:02:37
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 14354   RSS
안녕하세요 어제 phpunit 관련 질문을 올렸던 사람입니다.


application/libraries 에  phpUnit test코드를 만들어서 실행을 하는 경우

Call to undefined function get_instance() 에러가 노출이 됩니다.

application/tests 라는 디렉토리는 ci가 인식하지 못하는 곳라고 해서  

tests폴더 자체를 삭제 하고 그냥 라이브러리 폴더 바로 하위에서 바로 테스트 파일 만들었구요 


application/libraries/cheerUpListTest.php
application/libraries/bootstrap.php
application/libraries/phpunit.xml

이렇게 해놨습니다.  

phpUnit 설정은 

         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false"
         verbose="true">



했습니다.

cheerUpListTest 파일의 소스는

class cheerUpListTest extends PHPUnit_Framework_TestCase {
    
    private $CI;

    public function setUp(){
        $this->CI =& get_instance();
        $this->CI->load->database();
    }
    
    public function testSelect_function() {
        $sql = "SELECT * FROM tcheeruplist";
        $query = $this->db->query($sql);
        $result = $query->result();
        
        echo '<pre>'; print_r($result);
        
    }
    
}

입니다.




 
 다음글 Controller 에 함수인자를 건네 줄수 있을까요? (4)
 이전글 CI phpunit 관련 질문드립니다. (1)

댓글

CI_ORL / 2014/08/27 09:29:53 / 추천 0
CI 의 경우 부모 클래스를 사용한다고 정의 할때 __construct() 라는 생성자를 필히 넣도록 되어 있고,

그 안에서 이것은 무엇이다 라고 정의 하기 시작하는데...

setUp라는 함수에서 정의 하시나 봐요... 신기하다..laugh
해달봉 / 2014/08/27 09:47:54 / 추천 0
 __construct() 생성자로 변경을 하였으나 ,  똑같은 에러가 발생하네요
변종원(웅파) / 2014/08/27 10:15:22 / 추천 0
기존에 개발하실때 클래스나 함수들을 library로 사용하는 경우 어떻게 하시나요?
include해서 사용하죠. 그 라이브러리를 직접 주소로 접근해서 사용하는건 아니죠.

ci도 똑같습니다. library에 있는 파일을 직접 접근하는게 아니라 컨트롤러안에서 load(include)해서
사용합니다. 

매뉴얼 (http://cikorea.net/user_guide_2.1.0/general/creating_libraries.html) 다시 한번 보시구요.

phpunit 클래스를 library에 위치시키고 컨트롤러에서 phpunit을 로딩하고 사용하세요.
codeigniter phpunit 으로 검색 안해보셨나요?


library의 파일에 get_instance 라는 구문을 넣고 에러가 안나려면 get_instance가 어디에 속해 있는지 알려줘야하죠.
로딩도 안하고 include도 안하는데 어디에 있는 함수인지 어떻게 알까요?
컨트롤러에서 그 라이브러리를 로딩할때 get_instance라는 함수가 어디 있는지 알게 되는겁니다.
해달봉 / 2014/08/27 10:31:12 / 추천 0
[CI_ORL] , [변종원(웅파)] 님 조언 감사합니다.

제가 바보같은 짓을 했네요 ㅠㅠ 다시한번 해보겠습니다. 감사합니다