Zend_Test

v1.11.11とかだとちゃんとtestも作ってくれるようになった!

なので、1.11.11ベースで行きましょう!

zf create project

した素の状態

tests/application
tests/application/controllers
tests/application/controllers/IndexControllerTest.php
tests/bootstrap.php
tests/phpunit.xml
tests/library

phpunit.xmlの中身

<phpunit bootstrap="./bootstrap.php">
    <testsuite name="Application Test Suite">
        <directory>./application</directory>
    </testsuite>
    <testsuite name="Library Test Suite">
        <directory>./library</directory>
    </testsuite>
 
    <filter>
        <!-- If Zend Framework is inside your project's library, uncomment this filter -->
        <!-- 
        <whitelist>
            <directory suffix=".php">../../library/Zend</directory>
        </whitelist>
        -->
    </filter>
</phpunit>

bootstrapが指定されている。これはこのxmlがある所からの相対パスなので tests/bootstrap.php

がこれに相当する。

<?php
 
// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
 
// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'testing'));
 
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));
 
require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();

APPLICATION_ENVにtestingがつっこまれているので場合によっては変更する必要があるかも。

phpunit.xmlの内容により、applicationとlibraryの中身がテストされる。applicationには以下の雛形が作成されている。

tests/application/controllers/IndexControllerTest.php

<?php
 
class IndexControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
{
 
    public function setUp()
    {
        $this->bootstrap = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini');
        parent::setUp();
    }
 
    public function testIndexAction()
    {
        $params = array('action' => 'index', 'controller' => 'Index', 'module' => 'default');
        $urlParams = $this->urlizeOptions($params);
        $url = $this->url($urlParams);
        $this->dispatch($url);
 
        // assertions
        $this->assertModule($urlParams['module']);
        $this->assertController($urlParams['controller']);
        $this->assertAction($urlParams['action']);
        $this->assertQueryContentContains("div#welcome h3", "This is your project's main page");
    }
 
 
}

中身は後でみるとして、これで実行する

% phpunit
PHPUnit 3.4.14 by Sebastian Bergmann.

.

Time: 0 seconds, Memory: 11.50Mb

OK (1 test, 4 assertions)

1つのテストに対してアサーションが4つかかって成功した事が示されている。

zendframework/zend_test.txt · 最終更新: 2012/04/07 10:32 (外部編集)
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0