В моем проекте Zend Framework у меня есть форма, которую я тестирую. В моей форме элемент с множественным выбором получает свои параметры из модели, которая получает их из базы данных.
public function init()
{
$this->addElement('select', 'Region_ID', array('multiOptions' => $this->getRegions()));
}
protected function getRegions()
{
$mapper = new Model_RegionMapper();
return $mapper->getFormSelectData(); //this method will try to connect to a database (or get another object that will connect to the database)
}
Я попытался скопировать пример в документации PHPUnit, но, похоже, он не работает.
public function setUp()
{
$stub = $this->getMock('Model_RegionMapper');
$stub->expects($this->any())
->method('getFormSelectData')
->will($this->returnValue(array('testdata')));
}
public function testFoo()
{
//this will fail
$form = new My_Form();
}
Тест не пройден, поскольку он пытается найти таблицу в базе данных, которая не существует. Но я не хочу, чтобы он вообще подключался к базе данных. Как правильно заглушить / смоделировать этот метод, чтобы он не вызывал базу данных?