CI 묻고 답하기

제목 php Unit __construct undefined 오류 때문에 미치겠네요 ㅠㅠ
글쓴이 해달봉 작성시각 2014/09/03 13:42:29
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 14925   RSS
tests 라는 폴더에 bootstrap.php, phpunit.xml 과 CRUD_TEST.php  파일 세개를 넣어놓았습니다

CRUD_TEST.php

<?php
require_once 'application/libraries/contents/setDBQueryTest.php';

class CRUD_TEST extends PHPUnit_Framework_TestCase {
    public $test;
    
    public function setUp() {
        $this->test = new setDBQueryTest();
    }
    
    public function testSelect_function () {
        $result = $this->test->select_function();
        echo $result ;
    }
}

application/libraries/contents/setDBQueryTest.php

class setDBQueryTest {
    
 var $CI;

   function __construct() {
       $this->CI =& get_instance();
       $this->CI->load->database();
   }
    
   //select Query 실행
    public function select_function() { 
        $CI =& get_instance();
        
        $CI->db->select('cul.nListSeq,
                        cul.sToName,
                        cul.sContent,
                        cul.dtCreateDate,
                        cul.dtCreateTime,
                        culs.emSnsSection,
                        culs.sDivisionSnsUrl,
                        cul.password')
                ->from('tcheeruplist AS cul')
                ->join('tcheeruplistsns AS culs' , 'cul.nListSeq = culs.nListSeq' , 'left')
                ->order_by('cul.nListSeq','ASC')
                ->offset(0)
                ->limit (5); 
        
        $query = $CI->db->get();
        $result = $query->result_array();
        
        return $result;
    }

이렇게 하고 CRUD_TEST.php를 이클립스에서 실행을 하게 되면 Call to undefined function get_instance() 오류가 발생합니다.ㅠㅠ 저번에도 비슷한 글을 올렸을 때 선배님들의 조언으로 다시 한번 테스트 코드를 변경했는데도 불구하고  계속 문제가 발생합니다..

오히려 테스트 코드 작성해서 실행되게 만드는게 더 어렵네요 ㅠㅠㅠ 
꼭 조언 부탁드립니다.
 
 다음글 CI_Security 내 $_csrf_token_nam...
 이전글 주소줄에 한글이 들어가면 다 깨져버리네요. (7)

댓글

Artz / 2014/09/03 14:08:12 / 추천 0
에러메세지를 보면 답이 있습니다.
Call to undefined function get_instance();
정의되지 않은 get_instance 함수 호출... 즉, get_instance를 못찾아서 발생한 문제라는 겁니다.


Codeigniter framework의 경우,
index.php가 실행되면서 library/helper 등의 모듈들을 로드하는 과정을 거치는데,
그 과정이 빠져있으니 당연히 해당 함수 정의 부분은 빠져있을테고,
위 에러를 나타낼 수 밖에요.

참고로 get_instance 함수는 system/core/CodeIgniter.php에 정의되어 있으며,
system/core/Controller.php에 정의된 CI_Controller 클래스의 get_instance 함수를 호출합니다.

좀 더 자세한 내용은, 소스 살펴보시면서 확인해보세요~
한대승(불의회상) / 2014/09/03 14:32:14 / 추천 0
CI용 TDD 라이브러리가 있습니다.
아래 URL 확인해 보세요.

http://cikorea.net/source/view/618/page/1/q/toastsubject