您可以进行以下操作:
class ABC
{
private $_setting = null;
private $_mailer = null;
public function setSetting($setting)
{
$this->_setting = $setting;
}
public function getSetting()
{
return $this->_setting;
}
public function setMailer($mailer)
{
$this->_mailer = $mailer;
}
public function getMailer()
{
return $this->_mailer;
}
function someFunction(){
if($this->_setting->get('status'))
{
$this->_mailer->send();
}
}
}
class SettingMock
{
private $_attributes = array();
public function setMock($attribute, $value)
{
$this->_attributes[$attribute] = $value;
}
public function get($attribute)
{
return $this->_attributes[$attribute];
}
}
class MailerMock
{
private $_values = array();
public function setValue($value)
{
$this->_values['return'] = $value;
}
public function send()
{
return $this->_values['return'];
}
}
测试类:
class FooTest extends PHPUnit_Framework_TestCase
{
public function testSendMail()
{
$settingMock = new SettingMock();
$settingMock->setMock('status', true);
$mailerMock = new MailerMock();
$mailerMock->setValue(true);
$testObject = new ABC();
$testObject->setSetting($settingMock);
$testObject->setMailer($mailerMock);
$return = $testObject->someFunction();
$this->assertTrue($return);
}
}