【问题标题】:PHPUnit with Zend FrameworkPHPUnit 与 Zend 框架
【发布时间】:2010-05-25 12:21:06
【问题描述】:

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

在大多数示例中,应用程序引导程序从内部的某种基类运行 setUp() 方法。

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

Example iam talking about

【问题讨论】:

    标签: php zend-framework phpunit


    【解决方案1】:

    仅作记录,我想这是您所指的具体代码:

    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 方法用于

    将世界设置为已知状态,然后 然后将其恢复到原始状态 当测试完成时。这种已知状态称为测试的fixture

    固定装置的处理方式可能因 xUnit 库而异,但概念保持不变。另请参阅 PHPUnit 手册中的 fixtures chapter

    PHPUnit 支持共享设置 代码。在运行测试方法之前, 称为 setUp() 的模板方法是 调用。 setUp() 是您创建的地方 你会反对的对象 测试。一旦测试方法有 跑完了,是否成功 或失败,另一种模板方法 调用了 tearDown() 。 tearDown() 是你清理的地方 您测试过的对象。

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

    话虽如此,Zend 框架在 PHPUnit 之上提供了一个额外的层,用于运行功能测试,这是对特性而不是对单个源代码单元的黑盒测试。这是通过扩展 Zend_Test_PHPUnit_ControllerTestCase 来实现的,从而保证对应用程序资源的访问。

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

    【讨论】:

      猜你喜欢
      • 2013-05-22
      • 2011-12-13
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      • 2013-04-20
      • 2011-12-15
      • 2011-12-23
      相关资源
      最近更新 更多