Symfony 2 と phpunit で機能テストを行います。
しかし、サービスに問題があります。説明させてください。実行テスト中に、アプリケーションで使用されるサービスを使用したいと考えています。だから、カーネルを設定するためにsetUp関数を設定しました:
static::$kernel = static::createKernel();
static::$kernel->boot();
$this->objectFactory = static::$kernel->getContainer()->get('some.application.objectfactory');
だから私はこれを持っていて、私の関数ではオブジェクトを返すサービスを使用する必要があるので、そのように私のサービスを呼び出します
$var = $this->objectFactory->getObject($id);
そして明らかに私のtearDown関数では、私はただ:
protected function tearDown()
{
$this->client->restart();
unset($this->client, $this->objectFactory);
}
だから私の問題は、私がこのメッセージを持っているテストを実行するときです:
Symfony\Component\DependencyInjection\Exception\InactiveScopeException: 非アクティブなスコープ ("request") のサービス ("request") を作成することはできません。
そして、私はこれを解決する方法を見つけることができません。誰かが何か考えがありましたか??
Symfony のバージョンは 2.2.1 で、phpunit のバージョンは 3.7.19 です。
誰かが私を助けることができれば、私はとても幸せです.
私の英語が下手でしたら申し訳ありません。
編集
たぶん、私が使用したサービスで誰かを助けることができます::
$request = $this->container->get('request');
それが機能しない理由のようです。削除すると、エラーは表示されませんが、それでも機能しません。
編集
@Cyprianあなたによると、私のコードを私が望むものに変更しました。だから私は自分のサービスに、私が望む関数にクライアント(クライアントWebテストケース)を追加し、関数内にこれを追加するだけです:
if (isset($client)) {
$request = $client->getRequest();
} else {
$request = $this->container->get('request');
}
したがって、サービスを呼び出す関数では、次のようになります。
public function getObject($id)
{
//Get the service from the kernel
$service = static::$kernel->getContainer()->get('service');
$object = $service->getObject($id, $this->client);
}
そして、それはこのようにうまく動作します
@nifrあなたのアイデアは私にはうまくいきませんが、あなたのアイデアは間違っていなかったと思います.私の場合はうまくいきません
しかし、助けてくれてありがとう。