繁体   English   中英

用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();
    }

在我的班级对此进行测试,我有以下代码:

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需要返回False,如果为False,则需要返回true。

但是值属是False,并且返回False。

有人可以帮我。

我用这段代码解决了

  $repository = $this->getMockBuilder('Doctrine\\Common\\Persistence\\ObjectRepository')->getMock(); $repository->expects($this->any()) ->method('findBy') ->willReturn([$germe]); 

在管理器功能中,我将foreach与数组配合使用,但返回的对象存储库不是Germ数组。 我只是添加[]来更正此问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM