Prueba de acciones del controlador cakephp 2.1 como agregar y editar

Estoy intentando probar una acción de adición muy simple para el controlador de artículos. A continuación se muestra mi código. No entiendo por qué esto no funciona.

$this->Articles->Article->hasAny

debería devolver verdadero para la acción admin_add que acabo de llamar y el registro de prueba que acabo de agregar. Sin embargo, está devolviendo falso;

    class ArticlesControllerTestCase extends ControllerTestCase {

    /**
         * Test Admin Add
         *
         * @return void
         */
        public function testAdminAdd() {   

            #define sample passing data  
            $sampleDataPass = array(
                'Article'=>array(
                    'title'=>'---Test Article Add---',
                    'body'=>'---Test Article Add Body---',
                    'status_id'=>1,
                    'category_id'=>1,
                )
            );

            #test passing data
            $this->Articles->request->data = $sampleDataPass;
            $this->testAction('admin/articles/add', array('data'=>$sampleDataPass));
            $this->assertEquals($this->Articles->Article->hasAny(array('Article.title'=>'---Test Article Add---')), true); #fails here
            }
    }


class MastersController extends AppController {
/**
     * Admin Add
     * Default admin add method for all controllers
     * Adds a record to the models database table
     * Not calling add action becase of __setRootUserId action
     * @return void
     */
    protected function _admin_add() {
        if (!empty($this->request->data)) { 
            #save data
            $this->{$this->modelClass}->create();
            if ($this->{$this->modelClass}->save($this->request->data)) {
                return $this->Redirect->flashSuccess($this->modelClass.' saved.', isset($this->redirectSuccessUrl) ? $this->redirectSuccessUrl : array('action' => 'view', $this->{$this->modelClass}->id));
            } else {
                return $this->Redirect->flashWarning($this->modelClass.' could not be saved.', isset($this->redirectWarningUrl) ? $this->redirectWarningUrl : null);
            }
        }
        $this->_lists();
    }
}

class ArticlesController extends MastersController {
    /**
     * Admin Add
     * @see controllers/MastersController::_admin_add()
     * @return void
     */
    public function admin_add(){
        parent::_admin_add();       
    }
}

preguntado el 22 de mayo de 12 a las 18:05

1 Respuestas

cache $this->Article para $this->controller (solo funcionará después de llamar a testAction). Si necesita llamarlo antes, debe llamar $this->generate() para obtener la instancia del controlador antes de que se ejecute cualquier acción

contestado el 23 de mayo de 12 a las 01:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.