PHP code example of hampel / xenforo-test-framework
1. Go to this page and download the library: Download hampel/xenforo-test-framework library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
hampel / xenforo-test-framework example snippets
// start by ensuring we are running the minimum rsion, '5.6.0', '<'))
{
die("PHP 5.6.0 or newer is R__;
// this is where we load in the main XenForo framework, but we aren't executing it yet
k whether we've got an API call
if (\XF::requestUrlMatchesApi())
{
\XF::runApp('XF\Api\App');
}
else // ... or a regular web call
{
\XF::runApp('XF\Pub\App');
}
// start by ensuring we are running the minimum rsion, '5.6.0', '<'))
{
die("PHP 5.6.0 or newer is _;
// this is where we load in the main XenForo framework, but we aren't executing it yet
is is the important bit. Rather than "running" our application - we instead instantiate a CLI runner (based on
// Symfony's Console Component) and have that work our what command we're asking for and executing that for us.
$runner = new \XF\Cli\Runner();
$runner->run();
namespace Tests;
use Hampel\Testing\TestCase as BaseTestCase;
abstract class TestCase extends BaseTestCase
{
/**
* @var string $rootDir path to your XenForo root directory, relative to the addon path
*
* Set $rootDir to '../../../..' if you use a vendor in your addon id (ie <Vendor/AddonId>)
* Otherwise, set this to '../../..' for no vendor
*
* No trailing slash!
*/
protected $rootDir = '../../../..';
/**
* @var array $addonsToLoad an array of XenForo addon ids to load
*
* Specifying an array of addon ids will cause only those addons to be loaded - useful for isolating your addon for
* testing purposes
*
* Leave empty to load all addons
*/
protected $addonsToLoad = [];
/**
* Helper function to load mock data from a file (eg json)
* To use, create a "mock" folder relative to the tests folder, eg:
* 'src/addons/MyVendor/MyAddon/tests/mock'
*
* @param $file
*
* @return false|string
*/
protected function getMockData($file)
{
return file_get_contents(__DIR__ . '/mock/' . $file);
}
}
protected function fakesMail()
{
// enableMailQueue is a config.php value, not an option - so mail sent with queue() goes
// straight to the transport rather than becoming a MailSend job we would never see
$this->setConfig('enableMailQueue', false);
$this->swap('mailer.transport', function (Container $c)
{
return new TestTransport();
});
// XF\Mail\Mailer takes both the transport and the queue flag as constructor arguments, and
// `mailer` is separately cached - so an already-built mailer would keep the real ones
$this->app()->container()->decache('mailer');
return $this->getMailTransport();
}
$this->mock('request', XF\Http\Request::class, function ($mock) {
$mock->expects()->getIp(true)->once()->andReturns('10.0.0.1');
});
$request = $this->spy('request', XF\Http\Request::class);
// ... run the code under test ...
$request->shouldHaveReceived('getIp');