带有 php 的测试单元
Test Unit with php
我是 php 的 testunit 新手,我需要用 phpunit 测试我的函数 changeStatus,但我在更改值时遇到问题。
函数更改状态
public function changeStatus(Genus $genus)
{
$isEnabled = $genus->getEnabled();
$genusGroupTab = self::$entityManager->getRepository(Germ::class)
->findBy(['genus' => $genus->getId()]);
if ($genusGroupTab != null) {
/** @var Germ $germ */
foreach ($genusGroupTab as $germ) {
$germ->setEnabled(!$isEnabled);
self::$entityManager->persist($germ);
self::$entityManager->flush();
}
}
$genus->setEnabled(!$isEnabled);
$this->save($genus);
return $genus->getEnabled();
}
在我的Class中测试这个我有这个代码:
public function testActiveGenusInactiveChangeStatus()
{
$genus = $this->createMock(Genus::class);
$genus->method('setGenusLabel')->willReturn('fefeef');
$genus->method('getId')->willReturn('3f3c6c06-5971-4e75-97ee-94543edafced');
$genus->method('getGenusLabel')->willReturn('ACIDAMINOCOCCUS');
$genus->method('getEnabled')->willReturn(false);
$germe = new Germ();
$germe->setGenus($genus);
$repository = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectRepository')->getMock();
$this->objectManager
->expects($this->once())
->method('getRepository')
->with(Germ::class)
->id($germe->getGenus()->getId())
->willReturn($repository);
$paramGenus = $germe->getGenus();
$this->assertFalse($this->managerGenus->changeStatus($paramGenus));
}
我需要这样做:
如果 Genus 的值为 True 但函数 changeStatus 需要 return False,如果为 False 他需要 return true。
但是值属是假的并且是 Return 假的。
有人可以帮助我。
我用这段代码解决了这个问题
$repository = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectRepository')->getMock(); $repository->expects($this->any())
->method('findBy')
->willReturn([$germe]);
在管理器函数中,我将 foreach 与数组一起使用,但我返回的是对象存储库,而不是 Germ 数组。
我只是添加 [] 来更正这个
我是 php 的 testunit 新手,我需要用 phpunit 测试我的函数 changeStatus,但我在更改值时遇到问题。
函数更改状态
public function changeStatus(Genus $genus)
{
$isEnabled = $genus->getEnabled();
$genusGroupTab = self::$entityManager->getRepository(Germ::class)
->findBy(['genus' => $genus->getId()]);
if ($genusGroupTab != null) {
/** @var Germ $germ */
foreach ($genusGroupTab as $germ) {
$germ->setEnabled(!$isEnabled);
self::$entityManager->persist($germ);
self::$entityManager->flush();
}
}
$genus->setEnabled(!$isEnabled);
$this->save($genus);
return $genus->getEnabled();
}
在我的Class中测试这个我有这个代码:
public function testActiveGenusInactiveChangeStatus()
{
$genus = $this->createMock(Genus::class);
$genus->method('setGenusLabel')->willReturn('fefeef');
$genus->method('getId')->willReturn('3f3c6c06-5971-4e75-97ee-94543edafced');
$genus->method('getGenusLabel')->willReturn('ACIDAMINOCOCCUS');
$genus->method('getEnabled')->willReturn(false);
$germe = new Germ();
$germe->setGenus($genus);
$repository = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectRepository')->getMock();
$this->objectManager
->expects($this->once())
->method('getRepository')
->with(Germ::class)
->id($germe->getGenus()->getId())
->willReturn($repository);
$paramGenus = $germe->getGenus();
$this->assertFalse($this->managerGenus->changeStatus($paramGenus));
}
我需要这样做:
如果 Genus 的值为 True 但函数 changeStatus 需要 return False,如果为 False 他需要 return true。
但是值属是假的并且是 Return 假的。
有人可以帮助我。
我用这段代码解决了这个问题
$repository = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectRepository')->getMock(); $repository->expects($this->any()) ->method('findBy') ->willReturn([$germe]);
在管理器函数中,我将 foreach 与数组一起使用,但我返回的是对象存储库,而不是 Germ 数组。 我只是添加 [] 来更正这个