Метод $this->mock()
в тестовых случаях Laravel специально предназначен для имитации экземпляра объекта в служебном контейнере Laravel. Из документов:
При издевательстве над объектом, который будет введен в ваш
приложение через сервисный контейнер Laravel, вам нужно будет привязать
ваш смоделированный instance
в контейнер в качестве привязки экземпляра.
Вместо этого вы можете использовать Mockery напрямую для насмешки над другими классами или экземплярами, которые не будут загружены в контейнер службы.
По-моему, вы должны насмехаться над методами createForHostName
и isValid
. Цель вашего теста в основном тогда состоит в том, чтобы просто проверить, что ваш метод контроллера возвращает то, что он должен дать с известной достоверностью сертификата.
Сначала вы можете смоделировать экземпляр SslCertificate
, который вы хотите вернуть из createForHostName
, примерно так:
$certificateMock = Mockery::mock('overload:Spatie\SslCertificate\SslCertificate');
$certificateMock->shouldReceive('isValid')->once()->andReturn(True);
Мы перегружаем вышеприведенный класс, чтобы мы могли высмеивать как методы экземпляра, так и статические методы класса.
Затем вы можете смоделировать метод createForHostName
для возврата экземпляра проверяемого класса сверху:
$certificateMock->shouldReceive('createForHostName')->once()->andReturn($certificateMock);