<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[PHPUnit mock一个对象实例及其代码！]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Tue, 04 Nov 2008 12:05:28 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	文件：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.php&nbsp;&nbsp;b.php&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aTest.php<br/><br/>a.php:<br/><br/><br/><div class="code">&lt;?php<br/>class a<br/>&#123;<br/>&nbsp;&nbsp;private $inHandle;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function getHandle($handle=&#039;&#039;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#039;&#039; != $handle)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;inHandle = $handle;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseif (&#039;&#039; != $this-&gt;inHandle)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;inHandle = new b();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;public function use_b_class($num)<br/>&nbsp;&nbsp;&#123;&nbsp;&nbsp;//调用b类的：need_mock方法，假如是外部资源，为此需要mock<br/>&nbsp;&nbsp;&nbsp;&nbsp;$value = $this-&gt;inHandle-&gt;need_mock($num);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$result = $value;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $result;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&#125;<br/>?&gt;</div><br/><br/><br/>b.php<br/><br/><br/><div class="code"><br/>&lt;?php<br/>class b<br/>&#123;&nbsp;&nbsp;protected $a = 0;<br/>&nbsp;&nbsp;protected $b = 0;<br/>&nbsp;&nbsp;public function __construct($a,$b)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;a = $a;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;b = $b;<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $this-&gt;b;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;public function&nbsp;&nbsp;need_mock($a)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$b = $this-&gt;a+$a;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $b;<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/>?&gt;</div><br/><br/>aTest.php<br/><br/><div class="code">&lt;?php<br/>require_once &#039;a.php&#039;;<br/>require_once &#039;b.php&#039;;<br/>require_once &#039;PHPUnit/Framework/TestCase.php&#039;;<br/>/**<br/> * a test case.<br/> */<br/>class aTest extends PHPUnit_Framework_TestCase &#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;/**<br/>&nbsp;&nbsp; * @var a<br/>&nbsp;&nbsp; */<br/>&nbsp;&nbsp;private $a;&nbsp;&nbsp;<br/>&nbsp;&nbsp;/**<br/>&nbsp;&nbsp; * Prepares the environment before running a test.<br/>&nbsp;&nbsp; */<br/>&nbsp;&nbsp;protected function setUp() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;parent::setUp ();&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated aTest::setUp()<br/>&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;a = new a(/* parameters */);<br/>&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;/**<br/>&nbsp;&nbsp; * Cleans up the environment after running a test.<br/>&nbsp;&nbsp; */<br/>&nbsp;&nbsp;protected function tearDown() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated aTest::tearDown()<br/>&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;a = null;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;parent::tearDown ();<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;/**<br/>&nbsp;&nbsp; * Constructs the test case.<br/>&nbsp;&nbsp; */<br/>&nbsp;&nbsp;public function __construct() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated constructor<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;/**<br/>&nbsp;&nbsp; * Tests a-&gt;getHandle()<br/>&nbsp;&nbsp; */<br/>&nbsp;&nbsp;public function testGetHandle() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated aTest-&gt;testGetHandle()<br/>&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;markTestIncomplete ( &quot;getHandle test not implemented&quot; );&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;a-&gt;getHandle(/* parameters */);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;/**<br/>&nbsp;&nbsp; * Tests a-&gt;use_b_class()<br/>&nbsp;&nbsp; */<br/>&nbsp;&nbsp;public function testUse_b_class() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated aTest-&gt;testUse_b_class()<br/>&nbsp;&nbsp;&nbsp;&nbsp;//$this-&gt;markTestIncomplete ( &quot;use_b_class test not implemented&quot; );<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//$this-&gt;a-&gt;use_b_class(/* parameters */);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$a = array(1,&quot;第二个参数&quot;);//注意：必须传array(构造函数参数1，构造函数参数2，构造函数参数3)<br/>&nbsp;&nbsp;&nbsp;&nbsp;$stub = $this-&gt;getMock(&#039;b&#039;, array(&#039;need_mock&#039;),$a);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$stub-&gt;expects($this-&gt;any())<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;method(&#039;need_mock&#039;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;with(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;equalTo( 1 )//传入一个参数 <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;will($this-&gt;returnValue(11));//设定返回为11<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;a-&gt;getHandle($stub);//传入经过mock的对象&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $this-&gt;a-&gt;use_b_class(1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;assertEquals($this-&gt;a-&gt;use_b_class(1) , 11 );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;assertEquals(array(array(0,1,2)),array(array(0,1,2)));//必须是所谓的二维数组，否则出错<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;&#125;<br/><br/>&#125;</div><br/><br/><br/>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] PHPUnit mock一个对象实例及其代码！]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>