我正在学习 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;
}
现在,当我尝试在提供程序方法中使用 $_FAIL 时,我得到一个 NULL 值而不是我期望的“失败”字符串。这真的很奇怪。