Если предоставленный вами фрагмент кода - это все, что вы хотите протестировать, я думаю, вам не обязательно проверять фактический объект ответа.Было бы достаточно написать тест, чтобы убедиться, что написанная вами функция обработки ошибок вызывает redirectTo('/login')
из $app
объекта, когда ему присваивается экземпляр HttpUnauthorizedException
в качестве входного аргумента.Функция обработки ошибок является единственным модулем, который вы написали в этом фрагменте кода, остальные части (например, error
и redirectTo
методы из $app
объекта) вызываются только в вашем коде, и вам не нужно писать какие-либотесты для них, поэтому я предлагаю не проверять реальный объект ответа, потому что в этом случае вы как-то тесно связываете тестовый код для функции обработки ошибок с методом redirectTo
из среды Slim, и это не будет модульный тест больше.
Поэтому я предлагаю вам не писать функцию обработки ошибок как анонимную функцию, чтобы вы могли писать модульные тесты для этой конкретной функции.Затем вы можете написать для него тесты и использовать библиотеку, такую как Mockery , чтобы предоставить для этой функции макетированный $app
объект и с помощью Mockeyr (старые методы, такие как shouldRecieve
или более новый allows
метод), выможет убедиться в том, что redirectTo('/login')
вызывается для этого смоделированного объекта, если ему передан экземпляр HttpUnauthorizedException
.
Кроме того, этот вопрос представляется актуальным Тестирование модульной конечной точки Slim Framework