0

記事コントローラーの非常に単純な追加アクションをテストしようとしています。以下は私のコードです。これが機能しない理由がわかりません。

$this->Articles->Article->hasAny

呼び出した admin_add アクションと追加したテスト レコードに対して true を返す必要があります。ただし、false が返されます。

    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();       
    }
}
4

1 に答える 1

0

キャッシュ$this->Article$this->controllerます (testAction を呼び出した後にのみ機能します)。前にそれを呼び出す必要がある場合$this->generate()は、アクションが実行される前にコントローラーインスタンスを取得するために呼び出す必要があります

于 2012-05-23T00:56:44.017 に答える