私は現在、私のSymfonyコントローラ用にいくつかのテストを書いています。 Doctrine param converterを使用しています。私はテストスイートでそれを模擬する方法を見つけることができません!Symfonyコントローラをテストするときにdoctrine param converterを模擬する
のように私のコントローラはなります関連する試験方法は
public function testAcceptMembershipRequest() {
$client = $this->createLoggedClient();
$client->getContainer()->set('medievistes.troop.membership_request_manager', $this->getMembershipRequestManagerMock());
$client->getContainer()->set('kilix_abac.security', $this->getKilixAbacMock());
$client->request('POST', '/troops/1/membership-requests/1/accept');
$this->assertEquals(200, $client->getResponse()->getStatusCode());
$this->assertJson($client->getResponse()->getContent());
$this->assertArrayHasKey('redirection_url', json_decode($client->getResponse()->getContent(), true));
}
ある
/**
* @Security("has_role('ROLE_USER')")
* @Route("/troops/{troop_id}/membership-requests/{id}/accept", name="accept_membership_request", methods={"POST"})
* @param \AppBundle\Controller\MembershipRequest $membershipRequest
*/
public function acceptMembershipRequest(MembershipRequest $membershipRequest) {
$troop = $membershipRequest->getTroop();
if($this->get('kilix_abac.security')->enforce('troop_leadership', $this->getUser(), $troop) !== true) {
throw new AccessDeniedHttpException('troops.access_denied');
}
$this->get('medievistes.troop.membership_request_manager')->acceptMembershipRequest($membershipRequest);
return new JsonResponse([
'redirection_url' => $this->generateUrl('troop_dashboard', ['id' => $membershipRequest->getTroop()->getId()])
]);
}
私は、明らかにSQLクエリが実行されるという事実による代わりに予想される200の404応答を取得空のテストデータベースに保存します。私は、私はそれを使用し、私はまだ私のリポジトリのテストに使用する備品を使用することができます知っているが、私はこの文脈でそれを使用しないでください。
このコンバータをモックする方法があれば、私はそれについて聞いてうれしいです!
ありがとうコミュニティ!
私はこのクラスをモックする場合、 paramコンバータマネージャは別のものを選択します。だから模擬は効果がない!しかし、param converter manager自体を嘲笑するとき、それは意図したように機能します。あなたは、リクエスト属性のデータをあなた自身で設定するコールバックを登録しなければなりません!私は最終的なコードを私の質問に編集として入れますが、私はあなたに正しい答えを与えます:D!ありがとうございます :) ! – Kern
申し訳ありませんが、これはちょっと古い質問ですが、このメソッドの実装が表示されません。$ this-> getMembershipRequestManagerMock()私はparamコンバーターを嘲笑することに問題があります。このメソッドの実装を投稿できるのであれば、私は感謝します。ありがとう – Armando