Yii 테스트 프레임워크는 PHPUnit을 기반으로 구축되었으므로 단위 테스트 작성 방법을 이해하기 전에 PHPUnit 설명서를 자세히 읽어 보는 것이 좋습니다. 아래에서는 Yii에서 단위 테스트 작성의 기본 원칙을 간략하게 요약합니다.
단위 테스트는 CTestCase 또는 CDbTestCase에서 상속된 XyzTest 클래스 형식으로 작성됩니다. 여기서 Xyz는 테스트를 나타냅니다. 예를 들어 Post 클래스를 테스트하려면 그에 따라 테스트 클래스의 이름을 PostTest로 지정합니다. 기본 클래스 CTestCase는 일반 단위 테스트 클래스인 반면 CDbTestCase는 PHPUnit_Framework_TestCase是这两个类的父类
때문에 테스트에만 적합합니다. , 우리는 이것부터 시작할 수 있습니다. 모든 메소드는 클래스에서 상속됩니다.
단위 테스트 클래스는 XyzTest.php 형식으로 PHP 파일에 저장됩니다. 편의상 단위 테스트 파일은 일반적으로 protected/tests/unit文件夹下
.
, assertTrue
), 대상 클래스의 동작을 확인하기 위한 중단점으로 assertEquals
:protected/tests/unit/CommentTest.php
class CommentTest extends CDbTestCase { public $fixtures=array( 'posts'=>'Post', 'comments'=>'Comment', ); ...... }로 저장합니다. 이 클래스에서는 멤버 변수
를 이 테스트에 사용할 특정 픽스처가 포함된 배열로 지정합니다. 이 배열은 특정 상태 이름에서 모델 클래스 또는 특정 상태 테이블 이름으로의 매핑을 나타냅니다(예: fixtures
에서 posts
으로). 특정 상태 테이블 이름으로 매핑할 때는 데이터 테이블 이름 앞에 접두사가 추가되어야 합니다. 모델 클래스 이름을 사용하는 경우 해당 테이블은 특정 상태 테이블로 처리됩니다. 이전에 설명했듯이 특정 상태 테이블은 테스트 메서드가 실행될 때마다 알려진 일부 상태로 재설정됩니다. Post
<img src="https://img.php.cn/upload/article/000/000/194/d8454295409f69752ae1c667ca9e3c2e-0.gif" alt="Yii 프레임워크 공식 가이드 시리즈 보충 자료 39 - 테스트: 단위 테스트" class="wp-smiley"> ost
특정 상태 이름을 사용하면 테스트 메서드에서 매우 편리한 방식으로 특정 상태 데이터에 액세스할 수 있습니다. 다음 코드는 일반적인 사용법을 보여줍니다.
// return all rows in the 'Comment' fixture table $comments = $this->comments; // return the row whose alias is 'sample1' in the `Post` fixture table $post = $this->posts['sample1']; // return the AR instance representing the 'sample1' fixture data row $post = $this->posts('sample1');
참고:을 작성해야 합니다. 코드는 매우 간단하고 명확합니다. 먼저 검토할 주석을 삽입한 다음 데이터베이스에서 데이터를 가져와서 최종적으로 승인 메서드를 호출하고 검토를 통과합니다.특정 상태 선언이 해당 데이터 테이블 이름(예: )을 사용하는 경우 모델 클래스와 관련된 정보가 더 이상 없기 때문에 위의 세 번째 사용 방법은 유효하지 않습니다.
다음,'posts'=>'Yii 프레임워크 공식 가이드 시리즈 보충 자료 39 - 테스트: 단위 테스트ost'
public function testApprove() { // insert a comment in pending status $comment=new Comment; $comment->setAttributes(array( 'content'=>'comment 1', 'status'=>Comment::STATUS_PENDING, 'createTime'=>time(), 'author'=>'me', 'email'=>[email protected]', 'postId'=>$this->posts['sample1']['id'], ),false); $this->assertTrue($comment->save(false)); // verify the comment is in pending status $comment=Comment::model()->findByPk($comment->id); $this->assertTrue($comment instanceof Comment); $this->assertEquals(Comment::STATUS_PENDING,$comment->status); // call approve() and verify the comment is in approved status $comment->approve(); $this->assertEquals(Comment::STATUS_APPROVED,$comment->status); $comment=Comment::model()->findByPk($comment->id); $this->assertEquals(Comment::STATUS_APPROVED,$comment->status); }
testApprove方法在Comment模型类中测试approve方法
위는 Yii Framework 공식 가이드 시리즈 부록 39 - 테스트: 유닛 테스트의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!