Home >php教程 >php手册 >Facebook 新开发的PHP Mock工具:FBMock

Facebook 新开发的PHP Mock工具:FBMock

WBOY
WBOYOriginal
2016-06-13 10:55:121655browse

为了让测试运行得更快更可靠,写测试更方便,人们通常使用Mock,而不是直接使用真正的外部依赖

最近,Facebook写了一个新的PHP Mock工具,用它写的Mock看上去非常干净整洁。

当使用PHP其它的Mock框架时,写的代码需要更多的语句,而且令测试过于依赖具体的实现细节。

比如,当我们用PHPUnit做Mock,只是简单地返回一些值时,代码可能象下面这样

[php]  

$user = $this->getMock('User')  
<p> ->expects($this->any())  </p>
<p> ->method('getID')  </p>
<p> ->will($this->returnValue(1234);  </p>
<p></p>

 

  

而使用FBMock时,代码如下:

 

[php] 

$user = mock('User')->mockReturn('getID', 1234);  

 

其实,FBMock并不是真正意义上的Mock框架,因为它没有上面代码那样,使用期望值检查。所以,只能算是一个有spy功能的桩。其实,Mock框架中的这种期望值检查最好少用,因为它有点儿过于限定化了。上面用FBMock的例子中,其实并不在意getID()被调用了多少次。

 

当然,有的时候检查哪个method被调用过也是很重要的,这时候可以简单地依赖于PHPUnit中的assertion。

 

[php]  

$logger = mock('Logger');  

  

// Run code that uses $logger  

  

// Make sure 'data' was logged  

$this->assertCalledOnce($logger, 'log', array('data'));  

 

目前,FBMock支持 Zend PHP 5.4+ 和 HipHop VM。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn