如何将PHPUnit与Zend Framework一起使用?

41 php testing phpunit unit-testing zend-framework

我想知道如何用Zend_Test编写PHPUnit测试,一般用PHP编写.

Ste*_*rig 14

我正在使用Zend_Test来完全测试所有控制器.设置起来非常简单,因为您只需要设置引导程序文件(引导文件本身不应该调度前端控制器!).我的基本测试用例类如下所示:

abstract class Controller_TestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
    protected function setUp()
    {
        $this->bootstrap=array($this, 'appBootstrap');
        Zend_Auth::getInstance()->setStorage(new Zend_Auth_Storage_NonPersistent());
        parent::setUp();
    }

    protected function tearDown()
    {
        Zend_Auth::getInstance()->clearIdentity();
    }

    protected function appBootstrap()
    {
        Application::setup();
    }
}
Run Code Online (Sandbox Code Playgroud)

在那里Application::setup();确实这也创下了实际应用中的所有设置了任务.然后一个简单的测试看起来像这样:

class Controller_IndexControllerTest extends Controller_TestCase
{
    public function testShowist()
    {
        $this->dispatch('/');
        $this->assertController('index');
        $this->assertAction('list');
        $this->assertQueryContentContains('ul li a', 'Test String');
    }
}
Run Code Online (Sandbox Code Playgroud)

就这样...

  • 我将Controller_TestCase放在我的tests/Controller目录中 - 这是所有控制器测试用例所在的目录.通常我在运行单元测试时不使用自动加载但是如果我进行控制器测试,我使用Zend_Loader :: registerAutoload()来使用自动加载,因为它非常...... (3认同)
  • ...很难跟踪MVC运行的依赖性.您只需确保遵循命名约定并且Zend_Loader将找到您的文件(设置include_path).要运行我的测试,我使用PHPUnit的CLI,因为我不喜欢Eclipse PDT中的PHPUnit集成.它的... (2认同)
  • ...切换窗口以启动测试实际上没有问题 - 特别是如果您遵循PHPUnit命名约定(与Zend Framework的约定相同)并使用TestSuites对测试进行分组.也许你应该看看例如Zend Framework本身使用的测试结构. (2认同)

isu*_*dor 7

他们在Zend Developer Zone上有一个" 单元测试艺术简介 ",它涵盖了PHPUnit.


Sam*_*der 0

我没有使用过 Zend_Test,但我已经使用 Zend_MVC 等针对应用程序编写了测试。最重要的部分是在测试设置中获得足够的引导代码。