CINXE.COM

joomla/test - Packagist

<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>joomla/test - Packagist</title> <meta name="description" content="Joomla Test Helper Package" /> <meta name="author" content="Jordi Boggiano" /> <link rel="canonical" href="https://packagist.org/packages/joomla/test" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="shortcut icon" href="/favicon.ico?v=1740139919" /> <link rel="stylesheet" href="/build/app.css?v=1740139919" /> <link rel="alternate" type="application/rss+xml" title="New Releases - joomla/test" href="https://packagist.org/feeds/package.joomla/test.rss" /> <link rel="alternate" type="application/rss+xml" title="New Releases - joomla" href="https://packagist.org/feeds/vendor.joomla.rss" /> <link rel="alternate" type="application/rss+xml" title="Newly Submitted Packages - Packagist" href="https://packagist.org/feeds/packages.rss" /> <link rel="alternate" type="application/rss+xml" title="New Releases - Packagist" href="https://packagist.org/feeds/releases.rss" /> <link rel="search" type="application/opensearchdescription+xml" href="/search.osd?v=1740139919" title="Packagist" /> <script nonce="JPY9b8kLMM1/+qclpYCkig=="> var onloadRecaptchaCallback = function() { document.querySelectorAll('.recaptcha-protected').forEach((el) => { el.closest('form').querySelectorAll('button, input[type="submit"]').forEach((submit) => { grecaptcha.render(submit, { 'sitekey' : '6LfKiPoUAAAAAGlKWkhEEx7X8muIVYy6oA0GNdX0', 'callback' : function (token) { submit.form.submit(); } }); }) }); }; </script> <link rel="stylesheet" href="/css/github/markdown.css?v=1740139919"> </head> <body> <section class="wrap"> <header class="navbar-wrapper navbar-fixed-top"> <section class="banner alert-error hidden"> Composer v1 support is <a href="https://blog.packagist.com/shutting-down-packagist-org-support-for-composer-1-x/">coming to an end</a> <i class="glyphicon glyphicon-remove banner-close" data-banner-id="composer1eol"></i> </section> <nav class="container"> <div class="navbar" role="navigation"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <h1 class="navbar-brand"><a href="/">Packagist</a> <em class="hidden-sm hidden-xs">The PHP Package Repository</em></h1> </div> <div class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li> <a href="/explore/">Browse</a> </li> <li> <a href="/packages/submit">Submit</a> </li> <li> <a href="/register/">Create account</a> </li> <li class="nav-user"> <section class="nav-user-signin"> <a href="/login/">Sign in</a> <section class="signin-box"> <form action="/login/" method="POST" id="nav_login"> <div class="input-group"> <input class="form-control" type="text" id="_username" name="_username" placeholder="Username / Email"> <span class="input-group-addon"><span class="icon-user"></span></span> </div> <div class="input-group"> <input class="form-control" type="password" id="_password" name="_password" placeholder="Password"> <span class="input-group-addon"><span class="icon-lock"></span></span> </div> <div class="checkbox"> <label for="_remember_me"> <input type="checkbox" id="_remember_me" name="_remember_me" value="on" checked="checked" /> Remember me </label> </div> <div class="signin-box-buttons"> <a href="/login/github" class="pull-right btn btn-primary btn-github"><span class="icon-github"></span>Use Github</a> <button type="submit" class="btn btn-success" id="_submit_mini" name="_submit">Log in</button> </div> </form> <div class="signin-box-register"> <a href="/register/">No account yet? Create one now!</a> </div> </section> </section> </li> </ul> </div> </div> </nav> </header> <section class="wrapper wrapper-search"> <div class="container "> <form name="search_query" method="get" action="/search/" id="search-form" autocomplete="off"> <div class="sortable row"> <div class="col-xs-12 js-search-field-wrapper col-md-9"> <input type="search" id="search_query_query" name="query" required="required" autocomplete="off" placeholder="Search packages..." tabindex="1" class=" form-control" value="" /> </div> </div> </form> </div> </section> <section class="wrapper"> <section class="container content" role="main"> <div id="search-container" class="hidden"> <div class="row"> <div class="search-list col-md-9"></div> <div class="search-facets col-md-3"> <div class="search-facets-active-filters"></div> <div class="search-facets-type"></div> <div class="search-facets-tags"></div> </div> </div> <div class="row"> <div class="col-md-9"> <div id="powered-by"> Search by <a href="https://www.algolia.com/"><img src="/img/algolia-logo-light.svg?v=1740139919"></a> </div> <div id="pagination-container"> <div class="pagination"></div> </div> </div> </div> </div> <div class="row" id="view-package-page"> <div class="col-xs-12 package"> <div class="package-header"> <div class="row"> <div class="col-md-9"> <h2 class="title"> <a href="/packages/joomla/">joomla<span class="hidden"> </span>/</a><span class="hidden"> </span>test </h2> </div> </div> </div> <div class="row"> <div class="col-md-8"> <p class="requireme"><i class="glyphicon glyphicon-save"></i> <input type="text" readonly="readonly" value="composer require joomla/test" /></p> <p class="description">Joomla Test Helper Package</p> </div> <div class="col-md-offset-1 col-md-3"> <div class="row package-aside"> <div class="details col-xs-12 col-sm-6 col-md-12"> <h5>Maintainers</h5> <p class="maintainers"> <a href="/users/wilsonge/"><img width="48" height="48" title="wilsonge" src="https://www.gravatar.com/avatar/9b26ac7056cf9ef565a2ad16317ef394?s=48&amp;d=identicon" srcset="https://www.gravatar.com/avatar/9b26ac7056cf9ef565a2ad16317ef394?s=96&amp;d=identicon 2x"></a> </p> <h5>Details</h5> <p class="canonical"> <a href="https://github.com/joomla-framework/test" title="Canonical Repository URL">github.com/joomla-framework/test</a> </p> <p><a rel="nofollow noopener external noindex ugc" href="https://github.com/joomla-framework/test">Homepage</a></p> <p><a rel="nofollow noopener external noindex ugc" href="https://github.com/joomla-framework/test/tree/2.0-dev">Source</a></p> <p><a rel="nofollow noopener external noindex ugc" href="https://github.com/joomla-framework/test/issues">Issues</a></p> </div> <div class="facts funding col-xs-12 col-sm-6 col-md-12"> <p> Fund package maintenance! <br><a rel="nofollow noopener external noindex ugc" href="https://github.com/joomla"> <i class="glyphicon glyphicon-user"></i>joomla </a> <br><a rel="nofollow noopener external noindex ugc" href="https://community.joomla.org/sponsorship-campaigns.html"> <i class="glyphicon glyphicon-link"></i>community.joomla.org/sponsorship-campaigns.html </a> </div> <div class="facts col-xs-12 col-sm-6 col-md-12"> <p> <span> <a href="/packages/joomla/test/stats" rel="nofollow">Installs</a>: </span> 176&#8201;205 </p> <p> <span> <a href="/packages/joomla/test/dependents?order_by=downloads" rel="nofollow">Dependents</a>: </span> 29 </p> <p> <span> <a href="/packages/joomla/test/suggesters" rel="nofollow">Suggesters</a>: </span> 0 </p> <p> <span> <a href="/packages/joomla/test/advisories" rel="nofollow">Security</a>: </span> 0 </p> <p> <span> <a href="https://github.com/joomla-framework/test/stargazers">Stars</a>: </span> 3 </p> <p> <span> <a href="https://github.com/joomla-framework/test/watchers">Watchers</a>: </span> 14 </p> <p> <span> <a href="https://github.com/joomla-framework/test/forks">Forks</a>: </span> 6 </p> <p> <span> <a rel="nofollow noopener external noindex ugc" href="https://github.com/joomla-framework/test/issues">Open Issues</a>: </span> 0 </p> <p><span>Type:</span>joomla-package</p> </div> </div> </div> </div> <div class="row versions-section"> <div class="version-details col-md-9"> <div class="title"> <span class="version-number">3.0.0</span> <span class="release-date">2023-10-08 14:37 UTC</span> </div> <div class="clearfix package-links"> <div class="row"> <div class="clearfix visible-sm-block"></div> <div class="clearfix visible-md-block visible-lg-block"></div> <div class="requires col-sm-6 col-md-4 "> <p class="link-type">Requires</p> <ul><li>php: ^8.1.0</li></ul> </div> <div class="devRequires col-sm-6 col-md-4 "> <p class="link-type">Requires (Dev)</p> <ul><li><a href="/packages/joomla/database">joomla/database</a>: ^3.0</li><li><a href="/packages/phan/phan">phan/phan</a>: ^5.4.2</li><li><a href="/packages/phpstan/phpstan">phpstan/phpstan</a>: ^1.10.7</li><li><a href="/packages/phpunit/phpunit">phpunit/phpunit</a>: ^9.5.28</li><li><a href="/packages/squizlabs/php_codesniffer">squizlabs/php_codesniffer</a>: ^3.7.2</li></ul> </div> <div class="clearfix visible-sm-block"></div> <div class="suggests col-sm-6 col-md-4 "> <p class="link-type">Suggests</p> <ul><li><a href="/packages/joomla/database">joomla/database</a>: To use the database test case, install joomla/database</li><li><a href="/packages/phpunit/phpunit">phpunit/phpunit</a>: To use the database test case, install phpunit/phpunit</li></ul> </div> <div class="clearfix visible-md-block visible-lg-block"></div> <div class="provides col-sm-6 col-md-4 hidden-xs"> <p class="link-type">Provides</p> <p class="no-links">None</p> </div> <div class="clearfix visible-sm-block"></div> <div class="conflicts col-sm-6 col-md-4 "> <p class="link-type">Conflicts</p> <ul><li><a href="/packages/joomla/database">joomla/database</a>: &lt;2.0</li></ul> </div> <div class="replaces col-sm-6 col-md-4 hidden-xs"> <p class="link-type">Replaces</p> <p class="no-links">None</p> </div> </div> </div> <div class="metadata"> <p class="license"><i class="glyphicon glyphicon-copyright-mark" title="License"></i> GPL-2.0-or-later <span class="source-reference"><i class="glyphicon glyphicon-bookmark" title="Source Reference"></i> 7ad61393eac855366d8d0d9d93898a5727e055d5</span></p> <p class="tags"> <i class="glyphicon glyphicon-tag" title="Tags"></i> <a href="https://packagist.org/search/?tags=framework">framework</a><a href="https://packagist.org/search/?tags=unit%20test">unit test</a><a href="https://packagist.org/search/?tags=phpunit">phpunit</a><a href="https://packagist.org/search/?tags=reflection">reflection</a><a href="https://packagist.org/search/?tags=joomla">joomla</a></p> </div> </div> <div class="col-md-3 no-padding"> <div class="package-aside versions-wrapper"> <ul class="versions"> <li class="details-toggler version" data-version-id="dev-2.0-dev" data-load-more="/versions/5140169.json"> <a href="#dev-2.0-dev" class="version-number">dev-2.0-dev</a> </li> <li class="details-toggler version" data-version-id="dev-3.x-dev" data-load-more="/versions/6915115.json"> <a href="#dev-3.x-dev" class="version-number">dev-3.x-dev / 3.0.x-dev </a> </li> <li class="details-toggler version open" data-version-id="3.0.0" data-load-more="/versions/7576745.json"> <a href="#3.0.0" class="version-number">3.0.0</a> </li> <li class="details-toggler version" data-version-id="2.0.2" data-load-more="/versions/6492821.json"> <a href="#2.0.2" class="version-number">2.0.2</a> </li> <li class="details-toggler version" data-version-id="2.0.1" data-load-more="/versions/5539625.json"> <a href="#2.0.1" class="version-number">2.0.1</a> </li> <li class="details-toggler version" data-version-id="2.0.0" data-load-more="/versions/5444713.json"> <a href="#2.0.0" class="version-number">2.0.0</a> </li> <li class="details-toggler version" data-version-id="2.0.0-rc" data-load-more="/versions/5429859.json"> <a href="#2.0.0-rc" class="version-number">2.0.0-rc</a> </li> <li class="details-toggler version" data-version-id="2.0.0-beta" data-load-more="/versions/3921507.json"> <a href="#2.0.0-beta" class="version-number">2.0.0-beta</a> </li> <li class="details-toggler version" data-version-id="dev-1.x-dev" data-load-more="/versions/5526606.json"> <a href="#dev-1.x-dev" class="version-number">dev-1.x-dev / 1.x-dev </a> </li> <li class="details-toggler version" data-version-id="1.4.3" data-load-more="/versions/5790857.json"> <a href="#1.4.3" class="version-number">1.4.3</a> </li> <li class="details-toggler version" data-version-id="1.4.2" data-load-more="/versions/5789061.json"> <a href="#1.4.2" class="version-number">1.4.2</a> </li> <li class="details-toggler version" data-version-id="1.4.1" data-load-more="/versions/5789034.json"> <a href="#1.4.1" class="version-number">1.4.1</a> </li> <li class="details-toggler version" data-version-id="1.4.0" data-load-more="/versions/5789004.json"> <a href="#1.4.0" class="version-number">1.4.0</a> </li> <li class="details-toggler version" data-version-id="1.3.1" data-load-more="/versions/3313852.json"> <a href="#1.3.1" class="version-number">1.3.1</a> </li> <li class="details-toggler version" data-version-id="1.3.0" data-load-more="/versions/3041984.json"> <a href="#1.3.0" class="version-number">1.3.0</a> </li> <li class="details-toggler version" data-version-id="1.2.0" data-load-more="/versions/1556864.json"> <a href="#1.2.0" class="version-number">1.2.0</a> </li> <li class="details-toggler version" data-version-id="1.1.6" data-load-more="/versions/1186509.json"> <a href="#1.1.6" class="version-number">1.1.6</a> </li> <li class="details-toggler version" data-version-id="1.1.5" data-load-more="/versions/1186435.json"> <a href="#1.1.5" class="version-number">1.1.5</a> </li> <li class="details-toggler version" data-version-id="1.1.4" data-load-more="/versions/1186288.json"> <a href="#1.1.4" class="version-number">1.1.4</a> </li> <li class="details-toggler version" data-version-id="1.1.3" data-load-more="/versions/1186276.json"> <a href="#1.1.3" class="version-number">1.1.3</a> </li> <li class="details-toggler version" data-version-id="1.1.2" data-load-more="/versions/356337.json"> <a href="#1.1.2" class="version-number">1.1.2</a> </li> <li class="details-toggler version" data-version-id="1.1.1" data-load-more="/versions/131398.json"> <a href="#1.1.1" class="version-number">1.1.1</a> </li> <li class="details-toggler version" data-version-id="1.1.0" data-load-more="/versions/131180.json"> <a href="#1.1.0" class="version-number">1.1.0</a> </li> <li class="details-toggler version" data-version-id="1.0" data-load-more="/versions/105992.json"> <a href="#1.0" class="version-number">1.0</a> </li> <li class="details-toggler version" data-version-id="1.0-beta3" data-load-more="/versions/94410.json"> <a href="#1.0-beta3" class="version-number">1.0-beta3</a> </li> <li class="details-toggler version" data-version-id="1.0-beta2" data-load-more="/versions/77144.json"> <a href="#1.0-beta2" class="version-number">1.0-beta2</a> </li> <li class="details-toggler version" data-version-id="1.0-beta" data-load-more="/versions/94409.json"> <a href="#1.0-beta" class="version-number">1.0-beta</a> </li> <li class="details-toggler version" data-version-id="1.0-alpha" data-load-more="/versions/74760.json"> <a href="#1.0-alpha" class="version-number">1.0-alpha</a> </li> <li class="details-toggler version" data-version-id="dev-4.x-dev" data-load-more="/versions/8506236.json"> <a href="#dev-4.x-dev" class="version-number">dev-4.x-dev</a> </li> <li class="details-toggler version last" data-version-id="dev-php-8.2" data-load-more="/versions/6490062.json"> <a href="#dev-php-8.2" class="version-number">dev-php-8.2</a> </li> </ul> <div class="hidden versions-expander"> <i class="glyphicon glyphicon-chevron-down"></i> </div> </div> <div class="last-update"> <p class="auto-update-success">This package is auto-updated.</p> <p>Last update: 2025-02-10 07:38:04 UTC </p> </div> </div> </div> <hr class="clearfix"> <div class="readme markdown-body"> <h1>README</h1> <a id="user-content-the-test-package-" class="anchor" href="#user-content-the-test-package-" rel="nofollow noindex noopener external ugc"></a> <p><a href="https://packagist.org/packages/joomla/test" rel="nofollow noindex noopener external ugc"><img src="https://camo.githubusercontent.com/2d2ee80375ba169f8dafb64f821089d0b2912f01e876d23d65bcab1a380b2b01/68747470733a2f2f706f7365722e707567782e6f72672f6a6f6f6d6c612f746573742f762f737461626c65" alt="Latest Stable Version" /></a> <a href="https://packagist.org/packages/joomla/test" rel="nofollow noindex noopener external ugc"><img src="https://camo.githubusercontent.com/7f69952b9f22b44d94f0d0b6c827fa93897da4b93f6bcbbb31050a90ab1d4e42/68747470733a2f2f706f7365722e707567782e6f72672f6a6f6f6d6c612f746573742f646f776e6c6f616473" alt="Total Downloads" /></a> <a href="https://packagist.org/packages/joomla/test" rel="nofollow noindex noopener external ugc"><img src="https://camo.githubusercontent.com/169cb1f42fdca7d6fb52948160f64bcafddb0a4287bb39aadfa7c06d7b0ac26c/68747470733a2f2f706f7365722e707567782e6f72672f6a6f6f6d6c612f746573742f762f756e737461626c65" alt="Latest Unstable Version" /></a> <a href="https://packagist.org/packages/joomla/test" rel="nofollow noindex noopener external ugc"><img src="https://camo.githubusercontent.com/706a049109884581c00d423440cf5bedc6061234133925f8586d72f0f5c64253/68747470733a2f2f706f7365722e707567782e6f72672f6a6f6f6d6c612f746573742f6c6963656e7365" alt="License" /></a></p> <p>This package is a collection of tools that make some of the jobs of unit testing easier.</p> <h2 class="heading-element">TestHelper</h2><a id="user-content-testhelper" class="anchor" href="#user-content-testhelper" rel="nofollow noindex noopener external ugc"></a> <p><code>Joomla\Test\TestHelper</code> is a static helper class that can be used to take some of the pain out of repetitive tasks whilst unit testing with PHPUnit.</p> <h3 class="heading-element">Mocking</h3><a id="user-content-mocking" class="anchor" href="#user-content-mocking" rel="nofollow noindex noopener external ugc"></a> <p>There are two methods that help with PHPUnit mock objects.</p> <h4 class="heading-element"><code>TestHelper::assignMockCallbacks</code></h4><a id="user-content-testhelperassignmockcallbacks" class="anchor" href="#user-content-testhelperassignmockcallbacks" rel="nofollow noindex noopener external ugc"></a> <p>This helper method provides an easy way to configure mock callbacks in bulk.</p> <pre><span class="pl-k">use</span> <span class="pl-v">Joomla</span>\<span class="pl-v">Test</span>\<span class="pl-smi">TestHelper</span>; <span class="pl-k">class</span> FooTest <span class="pl-k">extends</span> \PHPUnit_Framework_TestCase { <span class="pl-k">public</span> <span class="pl-k">function</span> <span class="pl-en">testFoo</span>() { <span class="pl-c">// Create the mock.</span> <span class="pl-s1"><span class="pl-c1">$</span>mockFoo</span> &#61; <span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>-&gt;<span class="pl-en">getMock</span>( <span class="pl-s">&#039;<span class="pl-s">Foo</span>&#039;</span>, <span class="pl-c">// Methods array.</span> <span class="pl-en">array</span>(), <span class="pl-c">// Constructor arguments.</span> <span class="pl-en">array</span>(), <span class="pl-c">// Mock class name.</span> <span class="pl-s">&#039;&#039;</span>, <span class="pl-c">// Call original constructor.</span> <span class="pl-c1">false</span> ); <span class="pl-s1"><span class="pl-c1">$</span>mockCallbacks</span> &#61; <span class="pl-en">array</span>( <span class="pl-c">// &#039;Method Name&#039; &#61;&gt; &lt;callback&gt;</span> <span class="pl-s">&#039;<span class="pl-s">method1</span>&#039;</span> &#61;&gt; <span class="pl-en">array</span>(<span class="pl-s">&#039;<span class="pl-s">\mockFoo</span>&#039;</span>, <span class="pl-s">&#039;<span class="pl-s">method1</span>&#039;</span>), <span class="pl-s">&#039;<span class="pl-s">method2</span>&#039;</span> &#61;&gt; <span class="pl-en">array</span>(<span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>, <span class="pl-s">&#039;<span class="pl-s">mockMethod2</span>&#039;</span>), ); TestHelper::<span class="pl-en">assignMockCallbacks</span>(<span class="pl-s1"><span class="pl-c1">$</span>mockFoo</span>, <span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>, <span class="pl-s1"><span class="pl-c1">$</span>mockCallbacks</span>); } <span class="pl-k">public</span> <span class="pl-k">function</span> <span class="pl-en">mockMethod2</span>(<span class="pl-s1"><span class="pl-c1">$</span>value</span>) { <span class="pl-k">return</span> <span class="pl-en">strtolower</span>(<span class="pl-s1"><span class="pl-c1">$</span>value</span>); } }</pre> <h4 class="heading-element"><code>TestHelper::assignMockReturns</code></h4><a id="user-content-testhelperassignmockreturns" class="anchor" href="#user-content-testhelperassignmockreturns" rel="nofollow noindex noopener external ugc"></a> <p>This helper method provides an easy way to configure mock returns values in bulk.</p> <pre><span class="pl-k">use</span> <span class="pl-v">Joomla</span>\<span class="pl-v">Test</span>\<span class="pl-smi">TestHelper</span>; <span class="pl-k">class</span> FooTest <span class="pl-k">extends</span> \PHPUnit_Framework_TestCase { <span class="pl-k">public</span> <span class="pl-k">function</span> <span class="pl-en">testFoo</span>() { <span class="pl-c">// Create the mock.</span> <span class="pl-s1"><span class="pl-c1">$</span>mockFoo</span> &#61; <span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>-&gt;<span class="pl-en">getMock</span>( <span class="pl-s">&#039;<span class="pl-s">Foo</span>&#039;</span>, <span class="pl-c">// Methods array.</span> <span class="pl-en">array</span>(), <span class="pl-c">// Constructor arguments.</span> <span class="pl-en">array</span>(), <span class="pl-c">// Mock class name.</span> <span class="pl-s">&#039;&#039;</span>, <span class="pl-c">// Call original constructor.</span> <span class="pl-c1">false</span> ); <span class="pl-s1"><span class="pl-c1">$</span>mockReturns</span> &#61; <span class="pl-en">array</span>( <span class="pl-c">// &#039;Method Name&#039; &#61;&gt; &#039;Canned return value&#039;</span> <span class="pl-s">&#039;<span class="pl-s">method1</span>&#039;</span> &#61;&gt; <span class="pl-s">&#039;<span class="pl-s">canned result 1</span>&#039;</span>, <span class="pl-s">&#039;<span class="pl-s">method2</span>&#039;</span> &#61;&gt; <span class="pl-s">&#039;<span class="pl-s">canned result 2</span>&#039;</span>, <span class="pl-s">&#039;<span class="pl-s">method3</span>&#039;</span> &#61;&gt; <span class="pl-s">&#039;<span class="pl-s">canned result 3</span>&#039;</span>, ); TestHelper::<span class="pl-en">assignMockReturns</span>(<span class="pl-s1"><span class="pl-c1">$</span>mockFoo</span>, <span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>, <span class="pl-s1"><span class="pl-c1">$</span>mockReturns</span>); } }</pre> <h3 class="heading-element">Reflection</h3><a id="user-content-reflection" class="anchor" href="#user-content-reflection" rel="nofollow noindex noopener external ugc"></a> <p>There are three methods that help with reflection.</p> <h4 class="heading-element"><code>TestHelper::getValue</code></h4><a id="user-content-testhelpergetvalue" class="anchor" href="#user-content-testhelpergetvalue" rel="nofollow noindex noopener external ugc"></a> <p>The <code>TestHelper::getValue</code> method allows you to get the value of any protected or private property.</p> <pre><span class="pl-k">use</span> <span class="pl-v">Joomla</span>\<span class="pl-v">Test</span>\<span class="pl-smi">TestHelper</span>; <span class="pl-k">class</span> FooTest <span class="pl-k">extends</span> \PHPUnit_Framework_TestCase { <span class="pl-k">public</span> <span class="pl-k">function</span> <span class="pl-en">testFoo</span>() { <span class="pl-s1"><span class="pl-c1">$</span>instance</span> &#61; <span class="pl-k">new</span> \<span class="pl-v">Foo</span>; <span class="pl-c">// Get the value of a protected &#96;bar&#96; property.</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span> &#61; TestHelper::<span class="pl-en">getValue</span>(<span class="pl-s1"><span class="pl-c1">$</span>instance</span>, <span class="pl-s">&#039;<span class="pl-s">bar</span>&#039;</span>); } }</pre> <p>This method should be used sparingly. It is usually more appropriate to use PHPunit&#039;s <code>assertAttribute*</code> methods.</p> <h4 class="heading-element"><code>TestHelper::setValue</code></h4><a id="user-content-testhelpersetvalue" class="anchor" href="#user-content-testhelpersetvalue" rel="nofollow noindex noopener external ugc"></a> <p>The <code>TestHelper::setValue</code> method allows you to set the value of any protected or private property.</p> <pre><span class="pl-k">use</span> <span class="pl-v">Joomla</span>\<span class="pl-v">Test</span>\<span class="pl-smi">TestHelper</span>; <span class="pl-k">class</span> FooTest <span class="pl-k">extends</span> \PHPUnit_Framework_TestCase { <span class="pl-k">public</span> <span class="pl-k">function</span> <span class="pl-en">testFoo</span>() { <span class="pl-s1"><span class="pl-c1">$</span>instance</span> &#61; <span class="pl-k">new</span> \<span class="pl-v">Foo</span>; <span class="pl-c">// Set the value of a protected &#96;bar&#96; property.</span> TestHelper::<span class="pl-en">setValue</span>(<span class="pl-s1"><span class="pl-c1">$</span>instance</span>, <span class="pl-s">&#039;<span class="pl-s">bar</span>&#039;</span>, <span class="pl-s">&#039;<span class="pl-s">New Value</span>&#039;</span>); } }</pre> <p>This method is useful for injecting values into an object for the purpose of testing getter methods.</p> <h4 class="heading-element"><code>TestHelper::invoke</code></h4><a id="user-content-testhelperinvoke" class="anchor" href="#user-content-testhelperinvoke" rel="nofollow noindex noopener external ugc"></a> <p>The <code>TestHelper::invoke</code> method allow you to invoke any protected or private method. After specifying the object and the method name, any remaining arguments are passed to the method being invoked.</p> <pre><span class="pl-k">use</span> <span class="pl-v">Joomla</span>\<span class="pl-v">Test</span>\<span class="pl-smi">TestHelper</span>; <span class="pl-k">class</span> FooTest <span class="pl-k">extends</span> \PHPUnit_Framework_TestCase { <span class="pl-k">public</span> <span class="pl-k">function</span> <span class="pl-en">testFoo</span>() { <span class="pl-s1"><span class="pl-c1">$</span>instance</span> &#61; <span class="pl-k">new</span> \<span class="pl-v">Foo</span>; <span class="pl-c">// Invoke the protected &#96;bar&#96; method.</span> <span class="pl-s1"><span class="pl-c1">$</span>value1</span> &#61; TestHelper::<span class="pl-en">invoke</span>(<span class="pl-s1"><span class="pl-c1">$</span>instance</span>, <span class="pl-s">&#039;<span class="pl-s">bar</span>&#039;</span>); <span class="pl-c">// Invoke the protected &#96;bar&#96; method with arguments.</span> <span class="pl-s1"><span class="pl-c1">$</span>value2</span> &#61; TestHelper::<span class="pl-en">invoke</span>(<span class="pl-s1"><span class="pl-c1">$</span>instance</span>, <span class="pl-s">&#039;<span class="pl-s">bar</span>&#039;</span>, <span class="pl-s">&#039;<span class="pl-s">arg1</span>&#039;</span>, <span class="pl-s">&#039;<span class="pl-s">arg2</span>&#039;</span>); } }</pre> <h2 class="heading-element">Installation via Composer</h2><a id="user-content-installation-via-composer" class="anchor" href="#user-content-installation-via-composer" rel="nofollow noindex noopener external ugc"></a> <p>Add <code>&#34;joomla/test&#34;: &#34;~2.0&#34;</code> to the require block in your composer.json and then run <code>composer install</code>.</p> <pre>{ <span class="pl-ent">&#34;require&#34;</span>: { <span class="pl-ent">&#34;joomla/test&#34;</span>: <span class="pl-s"><span class="pl-pds">&#34;</span>~2.0<span class="pl-pds">&#34;</span></span> } }</pre> <p>Alternatively, you can simply run the following from the command line:</p> <pre>composer require joomla/test <span class="pl-s"><span class="pl-pds">&#34;</span>~2.0<span class="pl-pds">&#34;</span></span></pre> </div> </div> </div> </section> </section> </section> <footer class="wrapper-footer"> <nav class="container"> <div class="row"> <ul class="social col-xs-7 col-sm-4 col-md-2 pull-right"> <li><a href="http://github.com/composer/packagist" title="GitHub"><span class="icon-github"></span></a></li> <li><a href="https://twitter.com/packagist" title="Follow @packagist"><span class="icon-twitter"></span></a></li> <li><a href="mailto:contact@packagist.org" title="Contact"><span class="icon-mail"></span></a></li> </ul> <ul class="col-xs-4 col-sm-4 col-md-2"> <li><a href="/about">About Packagist</a></li> <li><a href="/feeds/" rel="nofollow">Atom/RSS Feeds</a></li> </ul> <div class="clearfix visible-xs-block"></div> <ul class="col-xs-3 col-sm-4 col-md-2"> <li><a href="/statistics" rel="nofollow">Statistics</a></li> <li><a href="/explore/">Browse Packages</a></li> </ul> <div class="clearfix visible-xs-block visible-sm-block"></div> <ul class="col-xs-3 col-sm-4 col-md-2"> <li><a href="/apidoc">API</a></li> <li><a href="/mirrors">Mirrors</a></li> </ul> <div class="clearfix visible-xs-block"></div> <ul class="col-xs-3 col-sm-4 col-md-2"> <li><a href="https://status.packagist.org/">Status</a></li> <li><a href="https://p.datadoghq.com/sb/x98w56x71erzshui-4a54c45f82bacc991e83302548934b6a">Dashboard</a></li> </ul> </div> <div class="row sponsor"> <p class="col-xs-12">Packagist maintenance and hosting provided by <a href="https://packagist.com/"><img alt="Private Packagist" src="/img/private-packagist.svg?v=1740139919" /></a></p> </div> <div class="row sponsor"> <p class="col-xs-12">Monitoring provided by <a href="https://datadog.com/"><img alt="Datadog" src="/img/datadog-light.png?v=1740139919" /></a></p> </div> </nav> </footer> <script nonce="JPY9b8kLMM1/+qclpYCkig=="> var algoliaConfig = {"app_id":"M58222SH95","search_key":"5ae4d03c98685bd7364c2e0fd819af05","index_name":"packagist"}; window.process = { env: { DEBUG: undefined }, }; </script> <script nonce="JPY9b8kLMM1/+qclpYCkig==" src="/build/app.js?v=1740139919"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10