1

クラス コンストラクターで必要なサービスをモックしたい。PHPUnit の例外があります: MyService が必要で、Mock_MyService_0afc7fc1 が指定されています。

しかし、Request、EntityManager、またはその他の Symfony 2 コンポーネントでは、この問題はありません。

これが私のクラスの構成です:

use Acme\Bundle\Service\MyService;
use Symfony\Component\HttpFoundation\Request;

...

public function __construct(MyService $service, Request $request)
{

と私のモック:

...

$service = $this->getMock('MyService');

$class = new Class($service, $request);

独自のサービスをモックすることは不可能ですか? Symfony 2 コンポーネントのみ?

PS:そのMyServiceように削除すると:public function __construct($service, Request $request)、これは機能します。しかし、それで変数を定義したい:(

4

1 に答える 1

1

問題は、テスト実行時に PHPUnit がMyServiceクラスを見つけられない (または自動ロードできない) ことです。

つまり、他のモッキング ライブラリでも同じ問題が発生する可能性があります。それらはすべて、元のクラスをスキャンしてモックを作成するために存在する必要があるためです。

これは、PHPUnit に完全修飾クラス名を伝える必要があるために発生します。

コードを に変更する$this->getMock("\Acme\Bundle\Service\MyService");と、うまくいくはずです。

(それでも、嘲笑を試してみてください。それは素晴らしいライブラリです)

于 2012-11-19T10:12:12.737 に答える