Я изучаю 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 говорит, что не может найти класс Model в методе dataprovider. Однако, если я попытаюсь использовать константы в методах тестирования, все это работает, и нет никаких проблем. Я использую автозагрузчик Zend для загрузки своих классов, и все это было до сих пор. Я знаю, что мог бы просто ввести значения для самих констант, но я не знаю, почему я получаю эту ошибку.
Я могу только предположить, что методы поставщика данных вызываются до вызова метода установки, потому что я выполняю все операции автозагрузки в методе установки.
РЕДАКТИРОВАТЬ:
Я также попробовал следующее, но оно не будет работать с классами.
protected $_FAIL;
protected $_model;
public function setUp()
{
parent::setUp();
$this->_model = new Application_Model_SomeModel();
$this->_FAIL = Application_Model_SomeModel::FAIL;
}
Теперь, когда я пытаюсь использовать $ _FAIL в методе провайдера, я получаю значение NULL вместо ожидаемой строки 'fail'. Это действительно странно.