Они должны расширяться PHPUnit_Framework_TestCase
, а не ControllerTestCase
.
Вы тестируете Модель как единицу функциональности, а не как контроллер, поэтому Модель является отдельным фрагментом кода, который должен работать отдельно от вашего приложения и его контроллеров.
Вы не тестируете базу данных специально, поэтому вам не нужно расширять Zend_Test_PHPUnit_Db
.
Настройка PHPUnit должна быть достаточной для запуска приложения, чтобы Zend и любой автозагрузчик были настроены для загрузки вашей Модели. Затем ваши тестовые классы должны просто тестировать элементы кода модели и ничего больше из вашего приложения.
EDIT
Итак, рассмотрим следующую функцию для проверки в классе Application_Model_User2
:
static function find($name, $order=null, $limit=null, $offset=null)
{
return self::_selectAndBind(get_class(),
self::getDefaultAdapter()
->select()
->from($_table)
->where('name = ?', array($name))
->order($order)
->limit($limit, $offset)
);
}
В вашем тестовом классе, который расширяет PHPUnit_Framework_TestCase
, вот how-to и docs и Asset Functions , у вас может быть что-то вроде этого :
require_once 'PHPUnit/Framework.php';
class Application_Model_User2Test extends PHPUnit_Framework_TestCase
{
public function testFind()
{
// Get a result from the function we are testing
$result = Application_Model_User2::find("foo", "date", 10, 0);
// Test that there are 10 results
$this->assertEquals(10, count($result));
}
}
Вы также можете использовать такие функции, как assertGreaterThan()
, чтобы определить, был ли порядок правильным.
Примечание. Это всего лишь простой пример.