21,887
社区成员
发帖
与我相关
我的任务
分享
class cash{
public function __construct(){}
public function isCashed(){
//do something
return 1;
}
}
class sendMsg{
public function send(){
$cash = new cash();
$isCashed = $cash->isCashed();
return $isCashed;
//do something
}
}
class sendMsgTest extension PHPUnit_Framework_TestCase{
public function testSend(){
$sendMsg = new sendMsg();
//如何mock一个cash
}
}
class sendMsg{
protected function cash(){
return new cash()
}
public function send(){
$cash = $this->cash();
$isCashed = $cash->isCashed();
return $isCashed;
//do something
}
}
//将外部依赖抽离到单独的函数 然后测试的时候创建一个子类
class sendMsgExt extend sendMsg{
protected $cash;
public function setCash($cash){
return $this->cash = $cash;
}
protected function cash(){
return $this->cash;
}
}
//测试的时候 实例化子类并通过setCash将mock出来的cash注入进来
class sendMsgTest extension PHPUnit_Framework_TestCase{
public function testSend(){
$sendMsg = new sendMsgExt();
$mockCash = $this->mock('cash');
$mockCash->expects($this->any())->method("isCashed")->will($this->returnValue(1));
$sendMsg->setCash($mockCash);
$this->assertEquals(1,$sendMsg->send());
}
}