[ZF-10089] Zend_Log
[zend.git] / documentation / manual / ja / module_specs / Zend_Test-PHPUnit.xml
blob2a9d39e6ca159efb6a44eb160087ac35c098a088
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <!-- EN-Revision: 20807 -->
4 <sect1 id="zend.test.phpunit" xmlns:xi="http://www.w3.org/2001/XInclude">
5     <title>Zend_Test_PHPUnit</title>
7     <para>
8         <classname>Zend_Test_PHPUnit</classname> は
9         <acronym>MVC</acronym> アプリケーション向けのテストケースを用意します。
10         さまざまな責務に対応したテスト用のアサーションが含まれています。
11         実際に何ができるのかを知るには、
12         サンプルを見ていただくのが一番でしょう。
13     </para>
15     <example id="zend.test.phpunit.loginexample">
16         <title>Application Login TestCase のサンプル</title>
18         <para>
19             以下に示すのは
20             <classname>UserController</classname>
21             用のシンプルなテストケースで、以下のような内容を検証します。
22         </para>
24         <itemizedlist>
25             <listitem>
26                 <para>
27                 ログインフォームは、未認証のユーザに対しても表示されること。
28                 </para>
29             </listitem>
31             <listitem>
32                 <para>
33                 ユーザがログインしたら、自分のプロファイルページにリダイレクトされること。
34                 そしてプロファイルページには、関連する情報が表示されること。
35                 </para>
36             </listitem>
37         </itemizedlist>
39         <para>
40             この例は、いくつかの前提条件のもとに作成されています。
41             まず、起動時の設定のほとんどをプラグインに追い出しました。
42             これにより、環境設定が簡潔になったのおで
43             テストケースの準備がしやすくなりました。
44             また、アプリケーションの起動処理が 1 行で書けるようになっています。
45             また、autoloading の設定を行うことで、
46             (コントローラやプラグインなどの)
47             適切なクラスをいちいち require することを考えなくてすむようにしています。
48         </para>
50         <programlisting language="php"><![CDATA[
51 class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
53     public function setUp()
54     {
55         $this->bootstrap = array($this, 'appBootstrap');
56         parent::setUp();
57     }
59     public function appBootstrap()
60     {
61         $this->frontController
62              ->registerPlugin(new Bugapp_Plugin_Initialize('development'));
63     }
65     public function testCallWithoutActionShouldPullFromIndexAction()
66     {
67         $this->dispatch('/user');
68         $this->assertController('user');
69         $this->assertAction('index');
70     }
72     public function testIndexActionShouldContainLoginForm()
73     {
74         $this->dispatch('/user');
75         $this->assertAction('index');
76         $this->assertQueryCount('form#loginForm', 1);
77     }
79     public function testValidLoginShouldGoToProfilePage()
80     {
81         $this->request->setMethod('POST')
82               ->setPost(array(
83                   'username' => 'foobar',
84                   'password' => 'foobar'
85               ));
86         $this->dispatch('/user/login');
87         $this->assertRedirectTo('/user/view');
89         $this->resetRequest()
90              ->resetResponse();
92         $this->request->setMethod('GET')
93              ->setPost(array());
94         $this->dispatch('/user/view');
95         $this->assertRoute('default');
96         $this->assertModule('default');
97         $this->assertController('user');
98         $this->assertAction('view');
99         $this->assertNotRedirect();
100         $this->assertQuery('dl');
101         $this->assertQueryContentContains('h2', 'User: foobar');
102     }
104 ]]></programlisting>
106         <para>
107             この例は、もう少しシンプルに書くこともできます。
108             ここで示したアサーションのすべてが必須というわけではなく、
109             単に説明のためだけに用意しているものもあるからです。
110             アプリケーションのテストがいかにシンプルにできるのか、
111             この例でご理解いただけることでしょう。
112         </para>
113     </example>
115     <xi:include href="Zend_Test-PHPUnit-Bootstrapping.xml" />
116     <xi:include href="Zend_Test-PHPUnit-Testing.xml" />
117     <xi:include href="Zend_Test-PHPUnit-Assertions.xml" />
118     <xi:include href="Zend_Test-PHPUnit-Examples.xml" />
119 </sect1>
120 <!--
121 vim:se ts=4 sw=4 et: