PHP単位テストのモックオブジェクトは、コード内の実際の依存関係を表すシミュレートされたオブジェクトです。テスト中のユニットを分離し、外部システムまたは複雑なコンポーネントとの相互作用を制御できます。これは、信頼性の高い速いユニットテストを書くために重要です。通常、Phpunitの組み込みのモッキング機能のようなモッキングフレームワークまたは予言のような専用ライブラリを使用します。
Phpunitの組み込みモッキングを使用した基本的な例です。 classユーザー{private $ database; public function __construct(database $ database){$ this-> database = $ database; } public function getuserbyid(int $ id):array {return $ this-> database-> fetchuser($ id); }} classデータベース{public function fetchuser(int $ id):array {//データベースからのユーザーデータの取得をシミュレートする// ...複雑なデータベースインタラクション... return ['id' => $ id、 'name' => 「ジョン・ドー」]; }} class usertest extends testcase {public function testgetuserbyid(){//データベース依存関係の模擬オブジェクトを作成$ mockdatabase = $ this-> createmock(database :: class); //モックオブジェクトの予想される動作を定義します$ mockdatabase->予想($ this-> ance()) - > method( 'fetchuser') - > // mockデータベース$ user = newユーザー($ mockdatabase)を使用してユーザーオブジェクトを作成します。 //結果をアサート$ this-> assertequals(['id' => 1、 'name' => 'test user']、$ user-> getuserbyid(1)); }}
この例では、 $ mockdatabase
データベース
クラスをシミュレートします。 $ mockdatabase-> heecds($ this-> ance()) - > method( 'fetchuser')...
は、 fetchuser
メソッドが引数 1
で1回呼び出され、特定の配列を返すという期待を設定します。これにより、テスト中に実際のデータベースに接続する必要性が回避され、テストがより速く信頼性を高めることができます。これにより、データベースの問題、ネットワークの問題、または他のコンポーネントの動作などの外部要因によって引き起こされるテスト障害が防止されます。制御された環境でユニットをテストしています。
以上がPHPユニットテストでモックオブジェクトを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。