如何在Zend Framework中使用PHPUnit?

时间:2020-03-05 18:54:15  来源:igfitidea点击:

我想知道如何使用Zend_Test以及通常使用PHP编写PHPUnit测试。

解决方案

回答

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

回答

我正在使用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();
    }
}

其中," 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');
    }
}

就这样...

回答

他们在涉及PHPUnit的Zend开发人员专区上有"单元测试的技巧介绍"。

回答

我发现这篇文章非常有用。 Zend_Test文档也有很大帮助。
借助于这两个资源,我成功地在Zend Framework的QuickStart教程中实现了单元测试,并为此编写了一些测试。

回答

使用ZF 1.10,我将一些引导程序代码放入tests / bootstrap.php中(基本上是(public / index.php)中的内容,直到$ application-> bootstrap()。

然后我可以使用运行测试

phpunit --bootstrap ../bootstrap.php  PersonControllerTest.php