Отказ от ответственности: я новичок в модульном тестировании и просто намочил ноги. При этом я понимаю, что 100% не всегда возможно, но мне любопытно, есть ли решение для покрытия кода с помощью операторов if / else, таких как this, или если они просто непроверяемы .
Функция:
public function getAll()
{
// Query table for all rows sorted by name
$select = $this->select();
$select->order('name ASC');
$rowset = $this->fetchAll($select);
// Validate and return row
if($rowset->current())
{
// Return rowset
return $rowset;
}
else { return false; }
}
Юнит тест
public function testCanGetAll()
{
// Try to get all states
$result = $this->model->getAll();
$this->assertNotNull($result);
$this->assertNotEquals(false,$result);
}
Результат

Как видите, я не могу закрыть строку return false;
. Единственный способ проверить это - переименовать таблицу базы данных или что-то в этом роде.
Есть ли другой способ написания функций с помощью операторов if / else (что является довольно распространенной практикой), позволяющий упростить покрытие кода?
[EDIT]
Возможно, лучше не проверять результаты в функции, а просто вернуть ее? Какие бы вызовы ни выполняла эта функция, она выполняет собственную проверку?
public function getAll()
{
// Query table for all rows sorted by name
$select = $this->select();
$select->order('name ASC');
$rowset = $this->fetchAll($select);
// Return rowset whether valid or not
return $rowset;
}