Метод из моего MyClass
класса, который я хотел бы проверить, выглядит следующим образом:
public function needs()
{
$domains = $this->em->getRepository(WebDomain::class)->findBy(array(
'client' => $this->client
));
$hosting = $this->em->getRepository(WebHosting::class)->findBy(array(
'client' => $this->client
));
if($domains !== null && $hosting !== null){
return true;
}
return false;
}
Глядя на документацию Symfony Я создаю тест, подобный этому:
public function testNeeds()
{
$em = $this->createMock(ObjectManager::class);
$client = new Client();
/**
* Add WebHosting to Client
*/
$webHosting = new WebHosting();
$webHosting->setClient($client);
/**
* Create a new WebDomain for Client/WebHosting
*/
$webDomain = new WebDomain();
$webDomain->setClient($client);
$webDomain->setWebHosting($webHosting);
Я знаю, как создать фиктивный репозиторий (например, необходимый $domains
):
$domains = $this->createMock(ObjectRepository::class);
$domains->expects($this->any())
->method('findBy')
->willReturn($client->getWebDomain());
$em->expects($this->any())
->method('getRepository')
->willReturn($domains);
$myClass = new MyClass($client, $em);
Итак, насколько я понимаю, это создает насмешку, что всякий раз, когда вызывается метод findBy
, возвращается $domains
, но что мне нужно добавить, чтобы вернуть необходимый $hosting
?
Я подозреваю, что это как-то связано с $this->any()
, я предполагаю, что мне нужно сузить его до expects(WebDomain::class)
(что не работает с).
Так как я довольно новичок в UnitTests в Symfony (и вообще), указание на правильное руководство может также помочь. Спасибо!