КодCakePHP UnitTest издевались компонент Auth
class AclRowLevelsController extends AppController {
public $components = array(
// Don't use same name as Model
'_AclRowLevel' => array('className' => 'AclRowLevel')
);
public function view() {
$this->_AclRowLevel->checkUser();
...
}
}
class AclRowLevelComponent extends Component {
public function initialize(Controller $controller) {
$this->controller = $controller;
$this->AclRowLevel = ClassRegistry::init('AclRowLevel');
}
public function checkUser($permission, $model) {
$row = $this->AclRowLevel->find('first', array(
'conditions' => array(
'model' => $model['model'],
'model_id' => $model['model_id'],
'user_id' => $this->controller->Auth->user('id')
)
));
}
}
class AclRowLevelsControllerTest extends ControllerTestCase {
public function testViewAccessAsManager() {
$AclRowLevels = $this->generate('AclRowLevels', array(
'components' => array(
'Auth' => array(
'user'
),
'Session',
)
));
$AclRowLevels->Auth
->staticExpects($this->any())
->method('user')
->with('id')
->will($this->returnValue(1));
$this->testAction('/acl_row_levels/view/Task/1');
}
Проблема
Запрос в компоненте AclRowLevel требует идентификатор пользователя Auth. Я хочу имитировать значение user_id '1' для модульного теста. Изделенный метод «пользователь» метода Auth в моем тесте не работает для вызова из компонента. Таким образом, идентификатор пользователя в этом запросе имеет значение null.
Как это сделать?
Объект Auth уже издевался? см. $ this-> generate. Есть причина, почему этот код находится в компоненте. Здесь не все показано, так как это не относится к проблеме. – user2511309
Нет, это не так. Если это действительно так? – burzum
$ AclRowLevels = $ this-> генерировать ... правильно? Не могли бы вы точно указать, что я должен добавить. Я новичок в модульном тестировании. – user2511309