Как издеваться над статической переменной / свойством в phpunit?

Я хочу написать тест для функции php с помощью phpunit.

У меня есть класс Member:

class Member {
    public static STATUS_DELETED = 'deleted';
    public static STATUS_NORMAL = 'normal';

    private $name;
    private $status;

    public function getName() {
        return $this->name();
    }

    public function getStatus() {
        return $this->status;
    }
}

Класс MemberService, он подлежит тестированию:

class MemberService() {
    public function printMember(Member $member) {
        // Maybe some other logic, it's just a sample

        $status = $member->getStatus();

        // this line will get error when run test!
        if ($status == ‘Member::STATUS_DELETED’) {
            echo "this member " . $member->getName() . " has deleted";
        } else {
            echo $member->getName();
        }
    }
}

И тестовый пример phpunit:

class MemberServiceTest extends MyUnitTestCase {
    protected function setUp() {
    }

    protected function tearDown() {
    }

    public testPrintMember() {
        $memberService = new MemberService();

        // mock member
        $member = $this->createMock(Member::class);

        $member->method('getName')
            ->willReturn('zhangsan');

        $member->method('getStatus')
            // can not use Member::STATUS_NORMAL in there after mock
            ->willReturn('normal');

        $MemberService->printMember($member);

        // assert some thing in there
    }
}

Затем я запускаю тест и получаю сообщение об ошибке: Fatal error: Undefined class constant 'STATUS_DELETED' in ....

Member::STATUS_DELETED - это просто константная переменная, ее также можно поместить в другое место, но я не хочу ее перемещать.

Как я могу издеваться над статической переменной / свойством?

‘Member::STATUS_DELETED’, почему в этом коде есть цитата? Я не думаю, что здесь нужна цитата, поскольку это постоянная переменная.
david 10.07.2018 05:09

сделайте его const STATUS_DELETED = 'deleted';, чтобы вы могли обращаться к нему как к константе, например Member::STATUS_DELETED. Прямо сейчас он объявлен как статическая переменная (кстати, тогда это должен быть $STATUS_DELETED)

xmike 10.07.2018 08:47
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
432
0

Другие вопросы по теме