当前位置:  开发笔记 > 编程语言 > 正文

PHPUnit与Zend Framework

如何解决《PHPUnit与ZendFramework》经验,为你挑选了1个好方法。

我已经使用Zend Framework研究了PHPUnit的一些示例,但有一部分我不理解.

在大多数示例中,Application Bootstrap从setUp()Method中的某种baseClass运行.

为什么不__construct()呢?有什么好理由吗?

我正在谈论的例子



1> nuqqsa..:

只是为了记录,我想这是你所指的具体代码:

class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
    public $application;

    public function setUp()
    {
        $this->application = new Zend_Application(
            APPLICATION_ENV,
            APPLICATION_PATH . '/config/settings.ini'
        );

        $this->bootstrap = array($this, 'bootstrap');
        parent::setUp();
    }

    public function tearDown()
    {
        Zend_Controller_Front::getInstance()->resetInstance();
        $this->resetRequest();
        $this->resetResponse();

        $this->request->setPost(array());
        $this->request->setQuery(array());
    }

    public function bootstrap()
    {
        $this->application->bootstrap();
    }
}

在单元测试中,使用setUptearDown方法

将世界设置为已知状态,然后在测试完成时将其返回到其原始状态.这种已知状态称为测试夹具.

处理夹具的方式可能在xUnit库之间有所不同,但概念保持不变.另请参阅PHPUnit手册中的fixture章节:

PHPUnit支持共享设置代码.在运行测试方法之前,将调用名为setUp()的模板方法.setUp()是您创建要测试的对象的位置.一旦测试方法运行完毕,无论是成功还是失败,都会调用另一个名为tearDown()的模板方法.tearDown()是清理测试对象的地方.

因此,PHPUnit负责在测试用例类中包含的每个测试setUp方法之前执行该方法,而在每次执行之后进行处理.tearDown

话虽如此,Zend Framework在PHPUnit之上提供了一个额外的层来运行功能测试,这是对功能的黑盒测试,而不是源代码的各个单元.这是通过扩展Zend_Test_PHPUnit_ControllerTestCase来实现的,这样就可以保证对应用程序资源的访问.

在此特定示例中,在执行测试用例中的每个测试之前引导应用程序.如果我们考虑到我们在任何地方都不需要应用程序资源,例如在原始单元测试(其他测试用例的一部分)中,这是有道理的.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有