Symfony 5.0.5。我通过这种方法提供服务:
public function getFleas(Cat $cat): Collection
{
return $cat->getFleas();
}
在我的Cat
实体中:
/**
* @ORM\OneToMany(targetEntity="App\Entity\Flea", mappedBy="cat")
*/
private $fleas;
我正在尝试为getFleas
方法编写测试:
public function testItReturnsAListOfFleas()
{
$cat = $this->createCat();
$fleaList = [];
$numFleas = 5;
for ($i = 0; $i < $numFleas; $i++) {
$fleaList[] = $this->createFlea($cat);
}
$fleas = $this->fleaService->getFleas($cat);
$this->assertCount($numFleas, $fleas);
}
private function createCat(): Cat
{
$cat = new Cat();
$cat->setName('John');
$this->em->persist($cat);
$this->em->flush();
return $cat;
}
private function createFlea(Cat $cat): Flea
{
$flea = new Flea();
$flea->setName('Nigel');
$flea->setCat($cat);
$this->em->persist($flea);
$this->em->flush();
return $flea;
}
但是,这失败了。 $fleas
返回的getFleas
持久性集合的计数始终为0
。如何获得$fleas
的数量?我也尝试过
$this->assertSame($numFleas, $fleas->count());
但是这也会返回0
。
您需要在您的addFlea(Flea)
类中添加Cat
方法,并且每次创建一个新的Flea
时,都要调用它。
基本上,在Cat
上:
public function addFlea(Flea $flea) {
if (!$this->fleas->contains($flea)) {
$this->fleas->add($flea);
}
}
并修改Flea::setCat(Cat)
:
public function setCat(Cat $cat)
{
$cat->addFlea($this);
$this->cat = $cat;
}
对不起错字。在手机上键入代码不容易。自动更正不喜欢PHP。