Я не могу придумать ни одного ресурса, но могу привести один пример того, как я бы это сделал.
Итак, я бы создал класс FormTestCase следующим образом:
class FormTestCase extends PHPUnit_Framework_TestCase {
private $_form;
public function setUp() {
parent::setUp();
}
}
Тогда каждая форма может быть проверена следующим образом:
class DemoFormTest extends FormTestCase {
public function setUp() {
parent::setUp();
$this->_form = new My_Form_Demo();
}
public function testCorrectData() {
$mockInputData = array(
'username' => 'somename',
'password' => 'somepass',
'submit' => 'LOG_INTO'
);
$this->assertTrue($this->_form->isValid($mockInputData));
}
public function testInCorrectData() {
$mockInputData = array(
'username' => 'somename',
// password not given
'submit' => 'LOG_INTO'
);
$this->assertFalse($this->_form->isValid($mockInputData));
}
// some other tests
}
В приведенном выше примере My_Form_Demo
- это упрощенная версия вашей формы. Мне нужно было упростить его, потому что у меня нет ваших пользовательских декораторов, и я не смог запустить тест. Установку, которую я использовал для этого примера, можно увидеть здесь (вместе со всеми другими моими тестами).
Надеюсь, это поможет вам.