저는 우리 시스템이 PHPUnit과 더 호환되도록 노력하여 클래스의 단위 테스트를 더 많이 수행 할 수 있고 모의 객체로 작업하는 일부를 얻을 수있었습니다. 내가 주위를 둘러 볼 수없는 문제를 뛰어 다니며PHPUnit 모의 객체에서 다른 결과 리턴하기
우리가 가지고있는 수업 중 하나는 (모의 버전을 만들고 있습니다) 쿼리를위한 것입니다. 쿼리 문자열을 "query()"메서드에 전달하고 쿼리를 기록한 다음 실행하고 결과를 반환합니다. 또한 mysql_fetch_assoc을 "get_row()"라는 메서드로 래핑하여 원본과 매우 유사한 배열 값을 반환합니다.
일부 메서드에서는 "query()"메서드에 여러 쿼리가 전달되어 결과적으로 여러 개의 while 루프를 실행하여 데이터를 다른 변수에로드해야합니다. 첫 번째 탈출하기 위해
class object{
public function __construct($query){
$this->query = $query;
}
public function loadData(){
$data1 = queryDataSource("SELECT * FROM data1");
$data2 = queryDataSource("SELECT * FROM data2");
return Array(
"data1" => $data1,
"data2" => $data2,
);
}
private function queryDataSource($query){
$this->query->query($query)
while($row = $this->query->get_row()){
$result[] = $row;
}
return $result
}
}
class testObject extends PHPUnit_Framework_TestCase{
method testLoadData(){
$test_data = Array('name' => 'Bob', 'number' => '98210');
$query = $this->getMock('Query');
$query->expects($this->any())->method('query');
$query->expects($this->at(1))->method('get_row')->will($this->returnValue($test_data);
$query->expects($this->at(2))->method('get_row')->will($this->returnValue(False);
$query->expects($this->at(3))->method('get_row')->will($this->returnValue($test_data);
$query->expects($this->at(4))->method('get_row')->will($this->returnValue(False);
}
}
동안 $ 루프 객체 -> mysql_fetch_assoc을 할 때 발생하는 것처럼 내가 부울 FALSE 값을 반환하고있어() queryDataSource : 나는 아래의 단순화 된 버전을 만들었습니다. 문제는 두 번째 쿼리를 실행하고 get_row()를 통해 데이터를 가져 오려고하면 mock 객체가 at (3) 지점으로 이동하는 것보다 FALSE ratehr을 계속 반환하는 것입니다. 이것은 4 개의 객체에서도 발생합니다. 첫 번째 객체는 반환 값으로 테스트 데이터를 가져오고 두 번째는 FALSE가되고, 다른 객체는 매번 FALSE가됩니다.
이 문제를 해결할 방법이 있는지 아는 사람이 있습니까? FALSE 플래그를 제거하고 at()에서 홀수 값을 갖기 위해 노력했지만 동일한 문제가 있었으며 (1-2)에 대한 데이터를 반환하는 데 시도했지만 단지 모든 데이터를 처음에는 루프이고 다른 하나는 루프가 아닙니다. 당신이 줄 수있는 모든 도움을
덕분에, 내가 이해 것만 의사 만에서 보낸 것으로 보인다 내가 코드를 실행할 수 없습니다
응답이 늦어서 미안해 다른 프로젝트로 옮겨졌지만 곧 돌아갈 수 있어야합니다. 이것은 문제가 될 수있는 것처럼 보입니다. 작동하는 경우 알려줍니다. – SolidSquid
이 작업은 at()에 대한 인덱스가 메서드가 아니라 개체와 관련되어 있으므로 "쿼리"를 건너 뛴다고 생각했습니다. 프로세스의 일부. 또한 작동하지 않는 코드를 게시하지 않아서 죄송합니다. 그것은 내가 사용했던 코드를 기반으로하지만 단순화 된 버전으로 작성되었으며 – SolidSquid