데이터베이스를 사용하면서 작업 단위를 테스트 할 수있는 OOP 전략에는 어떤 것이 있습니까? User 클래스가 있고 프로덕션 환경이 MySQL에 대해 작동한다고 가정 해보십시오. PHP를 사용하여 여기에 표시된 몇 가지 가능한 접근 방법이 있습니다.
백엔드 데이터 소스를 추상화하기 위해
load()
및save()
에 대한 인터페이스가있는 $ data_source를 전달 하십시오. 테스트 할 때 다른 데이터 저장소를 전달하십시오.$ user = 새로운 사용자 ($ mysql_data_source); $ user-> load ( 'bob'); $ user-> setNickname ( '로비'); $ user-> save ();
데이터베이스에 액세스하고 결과 행을 사용자의 생성자에게 전달하는 팩토리를 사용하십시오. 테스트 할 때 $ row 매개 변수를 수동으로 생성하거나 UserFactory :: $ data_source에서 오브젝트를 조롱하십시오. (변경 사항을 레코드에 저장하려면 어떻게해야합니까?)
class UserFactory { static $data_source; public static function fetch( $username ) { $row = self::$data_source->get( [params] ); $user = new User( $row ); return $user; } }
나는이 디자인 패턴 과 깨끗한 코드를 내 옆에 여기,하지만 난 적용 개념을 찾기 위해 사투를 벌인거야.