2011-01-26 7 views
3

私はphpunitテストの初心者です。誰でも下の行をテストする方法について私に助けてくれますか?ZFフォームの検証後にPHPunitテストが行​​われない

Img example

これまでのところ、私のテストは次のとおりです。

public function testCanSendEmail() 
{ 
    $formData = array(
     'subject' => 'test subject', 
     'email'  => '[email protected]', 
     'message' => 'test message', 
     'name'  => 'test name'); 

    $this->request 
     ->setMethod('POST') 
     ->setPost($formData); 
    $this->dispatch('/contact'); 
    $this->assertAction('win'); 

私は、検証が成功した場合、それは全体の作用を介して従うだろうという印象の下にありましたか?誰でもここで何が起きているのか、そしてそのような行動に対して正しいテストが何であるか説明してください。

+3

$ this-> dispatch( '/ contact')の後に置くことができます。次のvar_dump($ this-> getResponse() - > getBody());これはhtml本文を返します。おそらく、検証エラーメッセージが表示されているかどうかを確認することができます。 – Marcin

+1

+1 @Gordonは興味深いリンクです。モデレーター選挙では幸運を祈る。 ;-) –

+0

@Davidありがとう、私はそれは私が過去のプライマリを取得しないと言うことは安全だと思います:) – Gordon

答えて

1

明らかな説明は、$form->isValidFALSEを返します。

coverage reportは、有効フォームのブロックが決して実行されなかったことを示しています。代わりに、elseブロックが実行されました。あなたが見つけ出す必要があるのは、理由と理由を取り除くことです。デバッガを使用して実行フローをステップ実行し、実行時に何が起こるかを確認します。

代わりに、TRUEを返すように連絡先フォームをスタブすることもできます。フォームはコントローラーアクションにハードコードされているので、その方法についてはhttp://sebastian-bergmann.de/archives/885-Stubbing-Hard-Coded-Dependencies.htmlをご覧ください。

さらにもう1つの方法:コンタクトフォームをサービスレイヤに送信して、実際のリクエストを行わずにこれをテストできるようにするコードを作成します。

関連する問題