私は次のコードを持っています:
<?php
class X
{
public function do($url)
{
$httpRequest = new \HttpRequest\Curl($url, $this->getOptions());
$httpRequest->fire();
// etc.
}
// ...
}
このクラスを単体テストできるようにするために、モックされたHttpRequestクラスを挿入したいと思います。これを行う1つの方法は、次のとおりです。
<?php
class X
{
private $httpRequestClass;
public function __construct($httpRequestClass = '\HttpRequest\Curl')
{
$this->httpRequestClass = $httpRequestClass;
}
public function do($url)
{
$httpRequest = new $this->httpRequestClass($url, $this->getOptions());
$httpRequest->fire();
// etc.
}
// ...
}
しかし、これは正しくないようです。他のアイデアはありますか?