PHP 단위 테스트의 모의 개체는 코드 내 실제 종속성을 나타내는 시뮬레이션 된 개체입니다. 이를 통해 테스트중인 장치를 분리하고 외부 시스템 또는 복잡한 구성 요소와의 상호 작용을 제어 할 수 있습니다. 이것은 신뢰할 수 있고 빠른 단위 테스트를 작성하는 데 중요합니다. 일반적으로 PhPunit의 내장 조롱 기능 또는 예언과 같은 전용 라이브러리와 같은 조롱 프레임 워크를 사용합니다.
PhPunit의 내장 조롱을 사용하는 기본 예는 다음과 같습니다. 클래스 사용자 {private $ 데이터베이스; public function __construct (database $ database) {$ this- & gt; database = $ database; } public function getUserByid (int $ id) : array {return $ this- & gt; database- & gt; fetchuser ($ id); }} 클래스 데이터베이스 {public function fetchuser (int $ id) : 배열 {// 데이터베이스에서 사용자 데이터를 시뮬레이션 // 복잡한 데이터베이스 상호 작용 ... return [ 'id'= & gt; $ id, 'name'= & gt; '존 도']; }} class usertest 확장 테스트 케이스 {public function testgetUserByid () {// 데이터베이스 종속성에 대한 모의 개체 생성 $ mockdatabase = $ this- & gt; createmock (database :: class); // Mock Object의 예상 동작을 정의합니다 $ mockdatabase- & gt; exceps ($ this- & gt; affer ()) -& gt; method ( 'fetchuser') -& gt; with (1) -& gt; // mock database $ user = new user ($ mockdatabase)를 사용하여 사용자 객체를 만듭니다. // 결과를 $ this- & gt; assertequals ([ 'id'= & gt; 1, 'name'= & gt; 'test user'], $ user- & gt; getUserByid (1)); }}}
이 예에서 $ mockdatabase
데이터베이스
클래스를 시뮬레이션합니다. $ mockdatabase- & gt; expects ($ this- & gt; afce ())-& gt; 메소드 ( 'fetchuser') ...
fetchuser
메소드가 인수 1
와 함께 한 번 호출 될 것이라는 기대를 설정하고 특정 어레이를 반환합니다. 이것은 테스트 중에 실제 데이터베이스에 연결할 필요가 없어 테스트를보다 빠르고 신뢰할 수있게합니다.
몇 가지 일반적인 함정은 모의 객체의 효과를 방해 할 수 있습니다 :
위 내용은 PHP 장치 테스트에서 Mock Objects를 어떻게 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!