zend 프로젝트에서 모델을 테스트하고 있는데 remove() 메소드를 호출하는 방법에 대한 질문이 있습니까? remove() 메서드를 호출하는 방법은 무엇입니까?
이
내가 테스트입니다 찾기 방법 :<?
class Admin_Model_Member2 extends Custom_Model_Base {
protected function __construct() {
parent::__construct();
}
static function load($id) {
return self::_selectAndBind(
get_class(),
self::getDefaultAdapter()
->select()
->from('member')
->where('id = ?', array($id)),
true);
}
function remove() {
return $this->delete();
}
}
Admin_Model_Member2이 Custom_Model_Base을 확장, 이것이 Custom_Model_Base이다
abstract class Custom_Model_Base {
static public function init($default_adapter = null)
{
if (self::$_db_default === null)
{
if (!is_null($default_adapter))
{
if (!$default_adapter instanceof Zend_Db_Adapter_Abstract)
{
throw new Exception('Provided adapter does not extend Zend_Db_Adapter_Abstract');
}
self::$_db_default = $default_adapter;
}
else if (Zend_Registry::isRegistered('db'))
{
self::$_db_default = Zend_Registry::get('db');
}
else
{
throw new Exception('No default adapter provided for the model layer');
}
}
}
public function delete()
{
$where = array();
foreach($this->_primary as $column)
{
$where[$column] = $this->_data[$column];
}
if ($this->_db->delete($this->_table, $where) != 0)
{
foreach($this->_primary as $column)
{
$this->_data[$column] = null;
}
return true;
}
return false;
}
}
이 내가 쓰기 테스트 케이스이며,
public function testCanRemove() {
$data = "80176";
Admin_Model_Member2::init();
$this->_model = Admin_Model_Member2::load($data);
$this->assertTrue($this->_model->remove());
}
remove() 메서드를 테스트하려고하므로 객체를로드 ($ id)하지만 $ this -> _ mo ($ this -> _ db -> delete ($ this -> _ table, $ this -> _ db -> table) 델타 -> remove(), 그것은 Custom_Model_Base 클래스의 113에서 "비회원에 대한 멤버 함수 delete() $ where)! = 0) ", 문제는 무엇이며 remove() 메서드를 호출하는 방법은 무엇입니까? 생성자가 보호되어 있으므로 Admin_Model_Member2 :: init()을 Admin_Model_Member2의 생성자에서 호출 할 수 없습니다.
두 계정을 병합했습니다. [쿠키 기반 계정에 대한이 FAQ 항목을 읽어보십시오.] (http://meta.stackexchange.com/questions/44557/why-should-i-register-my-account/44562/1228) – Will