Zend framework 如何在Zend中使用PHPUnit测试函数?

Zend framework 如何在Zend中使用PHPUnit测试函数?,zend-framework,frameworks,phpunit,Zend Framework,Frameworks,Phpunit,我有一个简单的问题。也许我错过了什么。在Zend框架中是否有可能测试正常功能,而不是操作 例如,我想运行此函数的测试: public function isMature($age){ if($age>=18) true; else false; } 它位于IndexController中。我试过了 $this->indexController = new IndexController(); $this->assertFalse($this->i

我有一个简单的问题。也许我错过了什么。在Zend框架中是否有可能测试正常功能,而不是操作

例如,我想运行此函数的测试:

public function isMature($age){
    if($age>=18) true;
        else false;
}
它位于IndexController中。我试过了

$this->indexController = new IndexController();
$this->assertFalse($this->indexController->isMature(5));
但PHPUnit说我必须将Zend_Controller_Request_Abstract的实例传递给u construct()。这是实现这一目标的正确途径吗?如何以良好的方式准备此测试


谢谢。

在一个控制器中测试这些功能并不容易,因为它不是一个动作。我会将这种“业务逻辑”转移到一个服务类或模型或任何东西上,并对此进行测试

class My_Age_Service()
{
    public function isMature($age){
       if($age>=18) true;
        else false;
    }
}
要对控制器动作进行单元测试,请查看“Zend_Test_PHPUnit_ControllerTestCase”
您根本不需要使用控制器来测试您的功能。您的代码与Zend Framework无关,因此您不需要关心控制器

class MatureTest extends PHPUnit_Framework_TestCase {
    /**
     * @dataProvider dataIsMature
     */
    public function TestIsMature($age, $expected) {
       $this->assertSame($expected, isMature($age));
    }

    public function dataIsMature() {
       return array(
            'mature' => array(18, true),
            'not mature' => array(17, false),
            'really mature' => array(99, true)
       );
    }
}
只需确保您在测试类中包含了包含函数的文件

尽管您确实应该创建某种模型/服务类来包装此功能,而不是创建函数