zend-framework – PHPUnit,使用类consts来改变State
我正在学习Zend和
PHPUnit.
这是我在下面的内容 public function changeToIllegalState() { return array( array( Application_Model_SomeModel::FAIL ),array( Application_Model_SomeModel::SUCCESS ) ); } /** * @dataProvider changeToIllegalState * @expectedException IllegalStateChangeException */ public function testIllegalStateChangeGeneratesException( $state ) { $mapper = new Application_Model_Mapper_SomeModel(); $model = new Application_Model_SomeModel(); $model->changeState( $state ); $mapper->save( $model ); } 正如您在此处所看到的,数据提供程序提供了一些表示模型中不同状态的常量. PHPUnit说它无法在dataprovider方法中找到Model类.但是,如果我尝试在测试方法中使用常量,那么一切正常并且没有问题.我正在使用Zend自动加载器来加载我的课程,到现在为止它一直很花哨.我知道我可以直接输入常量值,但我不知道为什么我会收到这个错误. 我只能假设在调用setup方法之前调用了dataprovider方法,因为我在setup方法中执行了所有自动加载业务. 编辑: 我也试过以下但它仍然不适用于类consts. protected $_FAIL; protected $_model; public function setUp() { parent::setUp(); $this->_model = new Application_Model_SomeModel(); $this->_FAIL = Application_Model_SomeModel::FAIL; } 现在,当我尝试在provider方法中使用$_FAIL时,我得到一个NULL值而不是我期望的’fail’字符串.这真的很奇怪. 解决方法
PHPUnit实例化将在运行任何测试之前运行的所有测试用例.
>每个测试方法一个没有数据提供者. 假设您在bootstrap.php中设置了自动加载器,它应该加载包含这些常量的类.但是,我会尝试测试看看: public function changeToIllegalState() { require_once 'Zend/Loader/Autoloader'; Zend_Loader_Autoloader::getInstance(); return array( array( Application_Model_SomeModel::FAIL ),array( Application_Model_SomeModel::SUCCESS ) ); } 或者是Zend Framework将模型的目录添加到测试用例的setUp()方法之一的include路径中? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |