Как проверить использование глобальных переменных в PHPSpec?

Пользователь

от vladimir , в категории: PHP , 10 месяцев назад

Как проверить использование глобальных переменных в PHPSpec?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от edyth , 10 месяцев назад

@vladimir 

В PHPSpec нет прямой поддержки проверки использования глобальных переменных, так как фокусируется на тестировании поведения объектов, а не на внутренней реализации или состоянии. Однако, вы можете проверить, как объекты взаимодействуют с глобальными переменными, используя некоторые обходные решения.


Одним из способов проверки использования глобальных переменных в PHPSpec является использование дублированных зависимостей. Вы можете создать фиктивные объекты, которые представляют глобальные переменные, и затем проверить, как ваш объект взаимодействует с этими фиктивными объектами.


Например, предположим, что у вас есть класс MyClass, который использует глобальную переменную $_SESSION. В PHPSpec вы можете создать фиктивный объект для представления $_SESSION и затем проверить взаимодействие MyClass с этим фиктивным объектом. Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
class SessionDummy
{
    // реализация фиктивного объекта, представляющего $_SESSION
}

class MyClassSpec extends ObjectBehavior
{
    function it_should_use_session_variable()
    {
        $sessionDummy = new SessionDummy();
        $this->beConstructedWith($sessionDummy);

        // теперь вы можете проверить, что MyClass использует этот фиктивный объект,
        // например, через setter или getter

        // пример использования:
        $this->getSession()->shouldReturn($sessionDummy);
    }
}


Это позволит вам проверить, что ваш объект взаимодействует с фиктивным объектом, который представляет глобальную переменную $_SESSION. Обратите внимание, что вам нужно будет вручную создать фиктивный объект и передать его в конструктор вашего объекта.


Таким образом, хотя PHPSpec не предоставляет прямой поддержки для проверки использования глобальных переменных, вы можете использовать фиктивные объекты для представления этих переменных и проверить взаимодействие с ними.