1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 20807 -->
4 <sect1 id="zend.test.phpunit" xmlns:xi="http://www.w3.org/2001/XInclude">
5 <title>Zend_Test_PHPUnit</title>
8 <classname>Zend_Test_PHPUnit</classname> は
9 <acronym>MVC</acronym> アプリケーション向けのテストケースを用意します。
10 さまざまな責務に対応したテスト用のアサーションが含まれています。
15 <example id="zend.test.phpunit.loginexample">
16 <title>Application Login TestCase のサンプル</title>
20 <classname>UserController</classname>
21 用のシンプルなテストケースで、以下のような内容を検証します。
27 ログインフォームは、未認証のユーザに対しても表示されること。
33 ユーザがログインしたら、自分のプロファイルページにリダイレクトされること。
34 そしてプロファイルページには、関連する情報が表示されること。
40 この例は、いくつかの前提条件のもとに作成されています。
41 まず、起動時の設定のほとんどをプラグインに追い出しました。
44 また、アプリケーションの起動処理が 1 行で書けるようになっています。
45 また、autoloading の設定を行うことで、
47 適切なクラスをいちいち require することを考えなくてすむようにしています。
50 <programlisting language="php"><![CDATA[
51 class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
53 public function setUp()
55 $this->bootstrap = array($this, 'appBootstrap');
59 public function appBootstrap()
61 $this->frontController
62 ->registerPlugin(new Bugapp_Plugin_Initialize('development'));
65 public function testCallWithoutActionShouldPullFromIndexAction()
67 $this->dispatch('/user');
68 $this->assertController('user');
69 $this->assertAction('index');
72 public function testIndexActionShouldContainLoginForm()
74 $this->dispatch('/user');
75 $this->assertAction('index');
76 $this->assertQueryCount('form#loginForm', 1);
79 public function testValidLoginShouldGoToProfilePage()
81 $this->request->setMethod('POST')
83 'username' => 'foobar',
84 'password' => 'foobar'
86 $this->dispatch('/user/login');
87 $this->assertRedirectTo('/user/view');
92 $this->request->setMethod('GET')
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');
107 この例は、もう少しシンプルに書くこともできます。
108 ここで示したアサーションのすべてが必須というわけではなく、
109 単に説明のためだけに用意しているものもあるからです。
110 アプリケーションのテストがいかにシンプルにできるのか、
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" />