Я рассматриваю свои варианты настройки класса для юнит-тестирования.Этот конкретный класс должен ВСЕГДА использовать одну и ту же конфигурацию клиента мыла при нормальных обстоятельствах.Я чувствую, что пользователям класса не нужно беспокоиться о настройке мыльного клиента, когда они им пользуются.Или даже имейте в виду, что он вообще использует мыло.
Действительно, единственным исключением является модульное тестирование.Мне нужно уметь высмеивать Soap_Client.Я пришел к следующему подходу, где я создаю мыльный клиент в конструкторе и по желанию могу установить его с помощью setSoapClient ().
class WebServiceLayer
{
const WSDL_URL = 'https://www.example.com/?WSDL';
private $soapClient;
public function __construct()
{
$this->soapClient = new Soap_Client(self::WSDL_URL);
}
public function setSoapClient(Soap_Client $soapClient)
{
$this->soapClient = $soapClient;
}
public function fetchSomeResponse()
{
$soapClient = $this->soapClient;
return $soapClient->someRequest();
}
}
Это правильный способ справиться с этим?Единственная проблема, которую я вижу с этим, состоит в том, что создание экземпляра клиента в конструкторе, который «я слышал» - это то, чего следует избегать.
Я сталкивался с этой дилеммой раньше на других уроках, поэтому было бы очень приятно узнать мнение людей по этому поводу.