2012-02-18 2 views
1

저는 Codeigniter에서 TDD를 시도하고 있습니다. 나는 Codeigniter의 TDD : 데이터베이스 모의 방법?

function test_get_products_by_user_id() 
{ 
} 

어떻게 이런 경우에 데이터베이스의 모형을 만들 ... TOAST를 사용하여 데이터베이스를 건드리지 않고 간단한 기능을 테스트 할 수 있어요? 나는 그러한 테스트를 위해 데이터베이스를 쿼리하고 싶지 않습니다.

+0

TOAST? [PHPUnit] (http://www.phpunit.de/manual/current/en/database.html)이있을 때 왜 사람들은 자신의 단위 테스트 프레임 워크를 만들까요? 산업 표준이 PHPUnit 일 때 TOAST를 배우는 것은 너무 불필요한 것 같습니다. TOAST는 심지어 조롱을 지원합니까? http : //jensroland.com/projects/toast/ – Gordon

+0

에서 Codentiter 자체는 Front Controller와 Singletons를 사용하기 때문에 PHPUnit으로 테스트하기가 매우 어렵습니다. 토스트는 CI를 위해 맞춤 제작되었습니다. 변호가 아니라 단지 설명. –

답변

1

실제 데이터베이스를 쿼리하지 않으려는 경우에도 별도의 데이터베이스를 만들어 테스트 용 더미 데이터로 채우는 것이 좋습니다. 테스트를 실행할 때 데이터베이스를 쉽게 전환 할 수 있습니다. documentation

"더 간단한 것이 아니라 다차원 배열을 사용하는 이유는 여러 연결 값 세트를 선택적으로 저장할 수있게하기 위해서입니다. 예를 들어, 단일 설치에서 여러 환경 (개발, 생산, 테스트 등)을 실행하는 경우 각각에 대해 연결 그룹을 설정 한 다음 필요에 따라 그룹간에 전환 할 수 있습니다 (예 : "테스트 "환경에서 다음을 수행하십시오."

$db['test']['hostname'] = "localhost"; 
$db['test']['username'] = "root"; 
$db['test']['password'] = ""; 
$db['test']['database'] = "database_name"; 
$db['test']['dbdriver'] = "mysql"; 
$db['test']['dbprefix'] = ""; 
$db['test']['pconnect'] = TRUE; 
$db['test']['db_debug'] = FALSE; 
$db['test']['cache_on'] = FALSE; 
$db['test']['cachedir'] = ""; 
$db['test']['char_set'] = "utf8"; 
$db['test']['dbcollat'] = "utf8_general_ci"; 
$db['test']['swap_pre'] = ""; 
$db['test']['autoinit'] = TRUE; 
$db['test']['stricton'] = FALSE; 
2

HypersonicSQL과 같은 것을 사용 해본 적이 있습니까?

실제 데이터베이스처럼 작동하는 메모리 내장 데이터베이스를 생성합니다. 단위 테스트를 실행할 때마다 설정해야합니다.