皆さん、こんにちは。私は現在 phpunit の単体テストを学んでいます。
これに関して解決できない問題が見つかりました。
現在の開発フレームワーク zend フレームワーク 1 は、コントローラー層をテストするときにモデル層を分離する必要があります。
例:
public function phpunitAction(){ $enterpriseModel = new Model_Enterprise(); $sum = $enterpriseModel->getTotal(); print 'asd'; file_put_contents('xx.log',"suma is ".$sum[0]['total']."\r\n",FILE_APPEND); }
1.$oClientMock Model_Enterprise オブジェクト
2. getMock の 2 番目のパラメーターは、コピーする必要があるメソッドを渡す必要があります。そうでない場合、元のメソッドはコピーされません
public function testPhpunitAction(){ $oClientMock = $this->getMock('Model_Enterprise'); $res = array( 0=>array( 'total'=>22 ) ); $oClientMock->expects($this->once()) // 设定次数 ->method('getTotal') // 设定方法 ->will($this->returnValue($res)); // 设定方法返回值 $enterpriseModel = new Model_Enterprise(); $sum = $enterpriseModel->getTotal(); $user_info['user_name'] = 'root'; $user_info['real_name'] = 'root'; $user_info['id'] = 1; $user_info['group_ids'] = array(0=>1); $session = new Zend_Session_Namespace('UserInfo'); $session->user_info = $user_info; $params = array('action' => 'phpunit', 'controller' => 'index', 'module' => 'analyze'); $url = $this->url($this->urlizeOptions($params)); $this->dispatch($url); }
こんにちは、こんにちは、私は http://bbs.csdn.net/topics/390923963 のオリジナル投稿者です。phpunit の問題について質問させていただきました。
あなたの返信を読んで、とても役に立ちました。
私が聞きたいのは、MVC フレームワークでテストのためにコントローラー層を分離する方法です。
たとえば、コントローラーがあります。
class EnterPrise_AnnounceController extends ZendX_Controller_Action
{
public function needchecknumAction() {
$info = $announceMo del->getTotal("status IN ( '". Model_Announce::STATUS_PENDING ."')");
$info['result'] = $info['total'];
return Common_Protocols::generate_json_response($info);
}
}
方法テストケースで使用してください MOCKを使用する場合、フレームワークのモデル層はコントローラー内で呼び出されませんが、私のモックは呼び出されますか?
こんにちは、こんにちは。私は http://bbs.csdn.net/topics/390923963 の元の投稿者です。phpunit の問題について質問しました。
あなたの返信を読んで、とても役に立ちました。
私が聞きたいのは、MVC フレームワークでテストのためにコントローラー層を分離する方法です。
たとえば、コントローラーがあります。
class EnterPrise_AnnounceController extends ZendX_Controller_Action
{
public function needchecknumAction() {
$info = $announceMo del->getTotal("status IN ( '". Model_Announce::STATUS_PENDING ."')");
$info['result'] = $info['total'];
return Common_Protocols::generate_json_response($info);
}
}
方法テストケースで使用してください MOCKを使用すると、フレームワークのモデル層はコントローラーで呼び出されませんが、私のモックは呼び出されますか?