Я хочу проверить мою форму, которую я создал с помощью Zend_Form. Теперь проблема в том, что у меня есть поле с капчей в моей форме. И один из гуру Zend Framework сказал мне, что я должен смоделировать проверку поля капчи над фиктивным объектом.
Я прочитал это http://www.phpunit.de/manual/3.0/en/mock-objects.html в руководстве по PHPUnit. Но я действительно не понимаю, как я могу издеваться над валидатором.
У кого-нибудь есть опыт с этим? Кто-нибудь может мне помочь?
Спасибо
Дополнительная информация:
Я хочу, чтобы мой тест не прерывался, потому что он не может проверить поле капчи. Поэтому мне нужно выяснить, каким образом сообщение не будет остановлено из-за поля капчи.
public function testCanSubmitContactForm(){
$mock = $this->getMock('Zend_Form_Element_Captcha', array(), '', false);
$mock->expects($this->once()->method("isValid")->will($this->resturnValue(true)));
$this->request->setMethod('post')
->setPost(array(
'email' => 'someemail@adres.com',
'comment' => 'Testing the bladiebla contact form'
'captcha' => ''//no idea
));
$this->dispach('/contact');
}
Вот как выглядит моя сгенерированная Zend_Form форма:
<code> <form id="contact-form" enctype="application/x-www-form-urlencoded" method="post" action="/index/contact"><dl class="zend_form">
<dt id="email-label"><label for="email" class="required">Uw E-mailadres</label></dt>
<dd id="email-element">
<input type="text" name="email" id="email" value="" /></dd>
<dt id="comment-label"><label for="comment" class="required">Stel hieronder uw vraag of geef je commentaar op</label></dt>
<dd id="comment-element">
<textarea name="comment" id="comment" cols="71" rows="24"></textarea></dd>
<dt id="captcha-input-label"><label for="captcha-input" class="required">SPAM Beveiliging</label></dt>
<dd id="captcha-element">
<pre> _ _ __ __ ______ ______ ______ ___
| \ / || \ \\/ // /_ _// /_ _// /_____// / _ \\
| \/ || \ ` // `-| |,- -| ||- `____ ` | / \ ||
| . . || | || | || _| ||_ /___// | \_/ ||
|_|\/|_|| |_|| |_|| /_____// `__ ` \___//
`-` `-` `-`' `-`' `-----` /_// `---`
`-`
Voer de 6 букв в виде иероглифа. Deze vraag wordt gebruikt om te testen of ueen menselijke bezoeker bent teneinde spam-inzendingen te vermijden.