| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <!-- EN-Revision: 24249 -->
- <sect1 id="zend.test.phpunit" xmlns:xi="http://www.w3.org/2001/XInclude">
- <title>Zend_Test_PHPUnit(日本語)</title>
- <para>
- <classname>Zend_Test_PHPUnit</classname> は
- <acronym>MVC</acronym> アプリケーション向けのテストケースを用意します。
- さまざまな責務に対応したテスト用のアサーションが含まれています。
- 実際に何ができるのかを知るには、
- サンプルを見ていただくのが一番でしょう。
- </para>
- <example id="zend.test.phpunit.loginexample">
- <title>Application Login TestCase のサンプル</title>
- <para>
- 以下に示すのは
- <classname>UserController</classname>
- 用のシンプルなテストケースで、以下のような内容を検証します。
- </para>
- <itemizedlist>
- <listitem>
- <para>
- ログインフォームは、未認証のユーザに対しても表示されること。
- </para>
- </listitem>
- <listitem>
- <para>
- ユーザがログインしたら、自分のプロファイルページにリダイレクトされること。
- そしてプロファイルページには、関連する情報が表示されること。
- </para>
- </listitem>
- </itemizedlist>
- <para>
- この例は、いくつかの前提条件のもとに作成されています。
- まず、起動時の設定のほとんどをプラグインに追い出しました。
- これにより、環境設定が簡潔になったのおで
- テストケースの準備がしやすくなりました。
- また、アプリケーションの起動処理が 1 行で書けるようになっています。
- また、autoloading の設定を行うことで、
- (コントローラやプラグインなどの)
- 適切なクラスをいちいち require することを考えなくてすむようにしています。
- </para>
- <programlisting language="php"><![CDATA[
- class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
- {
- public function setUp()
- {
- $this->bootstrap = array($this, 'appBootstrap');
- parent::setUp();
- }
- public function appBootstrap()
- {
- $this->frontController
- ->registerPlugin(new Bugapp_Plugin_Initialize('development'));
- }
- public function testCallWithoutActionShouldPullFromIndexAction()
- {
- $this->dispatch('/user');
- $this->assertController('user');
- $this->assertAction('index');
- }
- public function testIndexActionShouldContainLoginForm()
- {
- $this->dispatch('/user');
- $this->assertAction('index');
- $this->assertQueryCount('form#loginForm', 1);
- }
- public function testValidLoginShouldGoToProfilePage()
- {
- $this->request->setMethod('POST')
- ->setPost(array(
- 'username' => 'foobar',
- 'password' => 'foobar'
- ));
- $this->dispatch('/user/login');
- $this->assertRedirectTo('/user/view');
- $this->resetRequest()
- ->resetResponse();
- $this->request->setMethod('GET')
- ->setPost(array());
- $this->dispatch('/user/view');
- $this->assertRoute('default');
- $this->assertModule('default');
- $this->assertController('user');
- $this->assertAction('view');
- $this->assertNotRedirect();
- $this->assertQuery('dl');
- $this->assertQueryContentContains('h2', 'User: foobar');
- }
- }
- ]]></programlisting>
- <para>
- この例は、もう少しシンプルに書くこともできます。
- ここで示したアサーションのすべてが必須というわけではなく、
- 単に説明のためだけに用意しているものもあるからです。
- アプリケーションのテストがいかにシンプルにできるのか、
- この例でご理解いただけることでしょう。
- </para>
- </example>
- <xi:include href="Zend_Test-PHPUnit-Bootstrapping.xml" />
- <xi:include href="Zend_Test-PHPUnit-Testing.xml" />
- <xi:include href="Zend_Test-PHPUnit-Assertions.xml" />
- <xi:include href="Zend_Test-PHPUnit-Examples.xml" />
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|