엔티티 관리자로 공장을 테스트하려면 어떻게해야합니까? 내 컨테이너가 doctrine
에서 생성 된 클래스의 인스턴스를 반환하도록해야하기 때문에 오류가 있습니다 (반환되는 내용을 모르겠습니다).종속성을 사용하여 공장을 단위 테스트하는 방법
내가 통과 할 수있는 테스트를 만들려면 어떻게해야합니까?
// factory i want to test
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
$googleAppOption = $container->get(GoogleAppOptions::class);
$em = $container->get('doctrine.entity_manager.orm_default');
return new GoogleTokenHandler($googleAppOption, new GoogleTokenClient(), $em);
}
//test function
public function testReturnsTokenHandlerInstance()
{
$googleOptionsFactory = new GoogleOptionsFactory();
$googleOptions = $googleOptionsFactory($this->container->reveal(), null);
$this->container->get(GoogleAppOptions::class)->willReturn($googleOptions);
$googleTokenHandlerFactory = new GoogleTokenHandlerFactory($this->container);
$tokenHandler = $googleTokenHandlerFactory($this->container->reveal(), null);
$this->assertInstanceof(GoogleTokenHandler::class, $tokenHandler);
}
을하지만 난 내 공장을 만드는 공장이 필요 의미? –
또는 TokenHanlderFactory를 만들기 위해 내 컨트롤러에 서비스 위치 지정자를 사용해야합니까? –
어떤 팩토리가 팩토리를 만들지는 모르겠지만, 일반적으로 말하자면 - 어떤 다이나믹리즘이 관련되어 있다면 "FactoryFactory"를 갖고 자바 코드베이스에서 다소 일반적 일 것입니다 (어떤 상태가 요청 사이에있을 때) . 컨트롤러에서 컨테이너를 사용하여 팩토리를 얻거나 일부 DI 컨테이너를 사용하여 TokenHandler를 직접 가져올 수 있습니다 (예 : Symfony 's Container : https://symfony.com/doc/current/service_container/factories.html – dbrumann