сейчас дни, когда я играю с PHPUnit. Я просмотрел его документацию, но я не могу это понять. Позвольте мне объяснить свое дело.Написание PHPUnit Test для функции, возвращающей массив
У меня есть функция в классе, которая принимает три параметра: 1 array, 2 some string, 3 a class object
. Эта функция возвращает массив, помещая второй параметр в качестве индекса массива и результат как объект этого индекса. Моя функция как ниже
public function construct($testArray, $test,$analysisResult) {
$postedTest = explode('_', $test);
$testName = end($postedTest);
$postedTest = implode("_", array_slice($postedTest, 0, -1));
if (in_array($postedTest, array_keys($testArray))) {
$testArray[$postedTest][$testName] = $analysisResult;
} else {
$testArray[$postedTest] = array($testName => $analysisResult);
}
return $testArray;
}
Если я называю эту функцию как
$constructObj = new Application_Model_ConstructTree();
$test=$this->getMockForAbstractClass('Abstract_Result');
$test->level = "Error";
$test->infoText = "Not Immplemented";
$testArray = Array('databaseschema' => Array('Database' => $test));
$result = $constructObj->construct($testArray,"Database",$test);
Функция возвращает массив как
Array
(
[databaseschema] => Array
(
[Database] => AnalysisResult Object
(
[isRepairable] => 1
[level] => Error
[infoText] => Not Implemented
)
)
)
Теперь я хочу написать тест PHPUnit, чтобы проверить, что атрибуты объекта вроде isRepairable, level and infoText
существуют и не пусты. Я подумал, что assertNotEmpty
и assertAttributeEmpty
могут что-то сделать. Но я не могу понять, как это сделать.
Мой тест выглядит
public function testcontruct() {
$constructObj = new Application_Model_ConstructTree();
$test=$this->getMockForAbstractClass('Abstract_Result');
$test->level = "Error";
$test->infoText = "Not Immplemented";
$testArray = Array('databaseschema' => Array('Database' => $test));
$result = $constructObj->construct($testArray,"Database",$test);
$this->assertNotCount(0, $result);
$this->assertNotContains('databaseschema', $result);
}
Может кто-нибудь, пожалуйста, руководство :-)
это выглядит как ваша проблема J согласитесь с утверждениями. Это происходит, когда они терпят неудачу. Следовательно, assertTrue (Condition) будет фактически только через утверждение (ошибка), когда Условие не является истинным. Утверждение происходит только при сбоях, так что они как будто пропускают «только когда результаты не являются» от имени. –