テストをより高速かつ確実に実行し、テストをより便利に作成するために、実際の外部依存関係を直接使用する代わりに、モックを使用するのが一般的です。
最近、Facebook は新しい PHP モック ツールを作成しました。それを使用して作成されたモックは非常にクリーンで整然としています。
PHP 用の他のモック フレームワークを使用する場合、記述されたコードにはより多くのステートメントが必要になり、テストが特定の実装の詳細に依存しすぎます。
たとえば、PHPUnit を使用してモックを作成し、単にいくつかの値を返す場合、コードは次のようになります
[php]
$user = $this->getMock('User') </div>
<div> ->expects($this->any()) </div>
<div> ->メソッド('getID') </div>
<div> ->will($this->returnValue(1234); </div>
<div>
FBMockを使用する場合のコードは次のとおりです:
[php]
$user =mock('User')->mockReturn('getID', 1234);
実際には、FBMock は上記のコードのような期待値チェックを使用していないため、本当の意味での Mock フレームワークではありません。したがって、スパイ機能を持った杭としか考えられません。実際、モック フレームワークにおけるこの種の期待値チェックは、制限が少し厳しすぎるため、慎重に使用するのが最善です。 FBMock を使用した上記の例では、getID() が何回呼び出されるかは実際には問題ではありません。
もちろん、どのメソッドが呼び出されたかを確認することも重要な場合があります。この場合は、単純に PHPUnit のアサーションに依存することができます。
[php]
$logger = モック('ロガー')
// $logger を使用するコードを実行する
// 「データ」がログに記録されていることを確認してください
$this->assertCalledOnce($logger, 'log', array('data'));
現在、FBMock は Zend PHP 5.4+ と HipHop VM をサポートしています。
http://www.bkjia.com/PHPjc/477686.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/477686.html技術記事テストをより速く、より確実に実行し、より便利にテストを作成するために、人々は通常、実際の外部依存関係を直接使用する代わりに Mock を使用します。最近、Facebook は新しい PHP Mock ツールを作成しました...。