Тестовый блок с php - PullRequest
       18

Тестовый блок с php

1 голос
/ 24 мая 2019

Я новичок в testunit с php, мне нужно протестировать мою функцию changeStatus с 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.

Но род Value - False и Return False.

Кто-то может мне помочь, пожалуйста.

1 Ответ

0 голосов
/ 11 июня 2019

Я решаю это с помощью этого кода

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

В функции менеджера я использую foreach с массивом, но я вернул хранилище объектов, а не массив Germ. Я просто добавляю [], чтобы исправить это

...