<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>php simpletest unit testing private methods on random thoughts</title><link>https://awesomeprogrammer.com/categories/php-simpletest-unit-testing-private-methods/</link><description>Recent content in php simpletest unit testing private methods on random thoughts</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Tue, 30 Oct 2012 00:00:00 +0000</lastBuildDate><atom:link href="https://awesomeprogrammer.com/categories/php-simpletest-unit-testing-private-methods/index.xml" rel="self" type="application/rss+xml"/><item><title>Testing private methods with SimpleTest - example</title><link>https://awesomeprogrammer.com/blog/2012/10/30/testing-private-methods-with-simpletest-example/</link><pubDate>Tue, 30 Oct 2012 00:00:00 +0000</pubDate><guid>https://awesomeprogrammer.com/blog/2012/10/30/testing-private-methods-with-simpletest-example/</guid><description><![CDATA[<p><strong>2017 Update note:</strong> before proceeding think if you <em>really</em> want to test underlying implementation of a class in the first place ;-)</p>
<p>Here&rsquo;s quick example how to test private class method with <a href="http://www.simpletest.org/">SimpleTest</a> using <a href="http://www.php.net/manual/en/class.reflectionclass.php">RelectionClass</a> (while you are reading about reflection class I will also point you directly to <a href="http://www.php.net/manual/en/class.reflectionmethod.php">reflection method</a> and what it&rsquo;s all about).</p>
<p>Our class that we want to test with some private method:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#75715e">// sample_class.php
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">SampleClass</span> {
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">private</span> <span style="color:#66d9ef">function</span> <span style="color:#a6e22e">myPrivateMethod</span>($arg1) {
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> $arg1 <span style="color:#f92672">==</span> <span style="color:#ae81ff">7</span>;
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">?&gt;</span><span style="color:#960050;background-color:#1e0010">
</span></span></span></code></pre></div><p>And here&rsquo;s how you test that <code>myPrivateMethod</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#75715e">// sample_class_spec.php
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">SampleClassTest</span> <span style="color:#66d9ef">extends</span> <span style="color:#a6e22e">UnitTestCase</span> {
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">function</span> <span style="color:#a6e22e">testPrivateMethod</span>() {
</span></span><span style="display:flex;"><span>    $reflection_class <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">ReflectionClass</span>(<span style="color:#e6db74">&#34;SampleClass&#34;</span>);
</span></span><span style="display:flex;"><span>    $method <span style="color:#f92672">=</span> $reflection_class<span style="color:#f92672">-&gt;</span><span style="color:#a6e22e">getMethod</span>(<span style="color:#e6db74">&#34;myPrivateMethod&#34;</span>);
</span></span><span style="display:flex;"><span>    $method<span style="color:#f92672">-&gt;</span><span style="color:#a6e22e">setAccessible</span>(<span style="color:#66d9ef">true</span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    $sample_class <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">SampleClass</span>();
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    $result <span style="color:#f92672">=</span> $method<span style="color:#f92672">-&gt;</span><span style="color:#a6e22e">invoke</span>($sample_class, <span style="color:#ae81ff">7</span>); <span style="color:#75715e"># here you invoke method with you class object and pass arguments
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    $this<span style="color:#f92672">-&gt;</span><span style="color:#a6e22e">assertEqual</span>($result, <span style="color:#66d9ef">true</span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">?&gt;</span><span style="color:#960050;background-color:#1e0010">
</span></span></span></code></pre></div>]]></description><content:encoded><![CDATA[<p><strong>2017 Update note:</strong> before proceeding think if you <em>really</em> want to test underlying implementation of a class in the first place ;-)</p>
<p>Here&rsquo;s quick example how to test private class method with <a href="http://www.simpletest.org/">SimpleTest</a> using <a href="http://www.php.net/manual/en/class.reflectionclass.php">RelectionClass</a> (while you are reading about reflection class I will also point you directly to <a href="http://www.php.net/manual/en/class.reflectionmethod.php">reflection method</a> and what it&rsquo;s all about).</p>
<p>Our class that we want to test with some private method:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#75715e">// sample_class.php
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">SampleClass</span> {
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">private</span> <span style="color:#66d9ef">function</span> <span style="color:#a6e22e">myPrivateMethod</span>($arg1) {
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> $arg1 <span style="color:#f92672">==</span> <span style="color:#ae81ff">7</span>;
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">?&gt;</span><span style="color:#960050;background-color:#1e0010">
</span></span></span></code></pre></div><p>And here&rsquo;s how you test that <code>myPrivateMethod</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#75715e">// sample_class_spec.php
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">SampleClassTest</span> <span style="color:#66d9ef">extends</span> <span style="color:#a6e22e">UnitTestCase</span> {
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">function</span> <span style="color:#a6e22e">testPrivateMethod</span>() {
</span></span><span style="display:flex;"><span>    $reflection_class <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">ReflectionClass</span>(<span style="color:#e6db74">&#34;SampleClass&#34;</span>);
</span></span><span style="display:flex;"><span>    $method <span style="color:#f92672">=</span> $reflection_class<span style="color:#f92672">-&gt;</span><span style="color:#a6e22e">getMethod</span>(<span style="color:#e6db74">&#34;myPrivateMethod&#34;</span>);
</span></span><span style="display:flex;"><span>    $method<span style="color:#f92672">-&gt;</span><span style="color:#a6e22e">setAccessible</span>(<span style="color:#66d9ef">true</span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    $sample_class <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">SampleClass</span>();
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    $result <span style="color:#f92672">=</span> $method<span style="color:#f92672">-&gt;</span><span style="color:#a6e22e">invoke</span>($sample_class, <span style="color:#ae81ff">7</span>); <span style="color:#75715e"># here you invoke method with you class object and pass arguments
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    $this<span style="color:#f92672">-&gt;</span><span style="color:#a6e22e">assertEqual</span>($result, <span style="color:#66d9ef">true</span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#75715e">?&gt;</span><span style="color:#960050;background-color:#1e0010">
</span></span></span></code></pre></div>]]></content:encoded></item></channel></rss>