phpunit デカップリングテスト
皆さん、こんにちは。私は現在 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); }
テスト ケースを作成するときは、インスタンス化中にデータベース内のデータをクエリする代わりに、phpunit のモック オブジェクトを使用してオブジェクトを模倣する必要があります。
ドキュメントを読んで自分でテストケースを書きましたが、何か間違っているようです。
すごい
でも、うまくいきません。
アドバイスをお願いします。
ディスカッションへの返信 (解決策)
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を使用すると、フレームワークのモデル層はコントローラーで呼び出されませんが、私のモックは呼び出されますか?
ありがとう、とても役に立ちました

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。
