我測試了一個名爲City的類,它接受兩個參數,在這個類中我有一個返回修剪/過濾字符串的名字getter。注入一個驗證類實例到單元測試 - phpunit
問題
如果我想使用一個自定義的驗證類,我將不得不通過構造函數注入它。我將不得不在我的測試中創建一個真實的對象。
問題
我應該創建一個驗證對象,並把它傳遞給市級在我的測試?因爲我不能使用這個模擬。
我打破單元測試隔離在這裏?
市級注入驗證類
class City
{
protected $name;
protected $shortCode;
protected $customValidation;
public function __construct($name, $shortCode, CustomValidation $customValidation)
{
$this->name = $name;
$this->shortCode = $shortCode;
$this->customValidation = $customValidation;
}
public function name()
{
return $this->customValidation->trimmed_no_special_characters($this->name);
}
}
測試
後class City
{
protected $name;
protected $shortCode;
public function __construct($name, $shortCode)
{
$this->name = $name;
$this->shortCode = $shortCode;
}
public function name()
{
return preg_replace('/[^A-Za-z]/', '', trim($this->name));
}
}
市級注射驗證課後
測試
class CityTest extends TestCase
{
protected $city;
public function setUp()
{
$this->city = new City('Dubai', 'DXB', new CustomValidation('Dubai'));
}
}
爲什麼你不能使用模擬? –
,因爲城市類中的名稱getter使用方法進行驗證,我不知道該怎麼做,或者如果我可以使用模擬 –