Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/joomla-framework/test
Joomla Framework Test Package
https://github.com/joomla-framework/test
joomla joomla-framework mocking php phpunit reflection
Last synced: 4 months ago
JSON representation
Joomla Framework Test Package
- Host: GitHub
- URL: https://github.com/joomla-framework/test
- Owner: joomla-framework
- License: gpl-2.0
- Created: 2013-03-02T04:22:00.000Z (almost 12 years ago)
- Default Branch: 3.x-dev
- Last Pushed: 2023-10-08T14:37:34.000Z (over 1 year ago)
- Last Synced: 2024-09-29T20:04:40.832Z (4 months ago)
- Topics: joomla, joomla-framework, mocking, php, phpunit, reflection
- Language: PHP
- Homepage:
- Size: 5.2 MB
- Stars: 3
- Watchers: 15
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# The Test Package [![Build Status](https://ci.joomla.org/api/badges/joomla-framework/test/status.svg)](https://ci.joomla.org/joomla-framework/test)
[![Latest Stable Version](https://poser.pugx.org/joomla/test/v/stable)](https://packagist.org/packages/joomla/test)
[![Total Downloads](https://poser.pugx.org/joomla/test/downloads)](https://packagist.org/packages/joomla/test)
[![Latest Unstable Version](https://poser.pugx.org/joomla/test/v/unstable)](https://packagist.org/packages/joomla/test)
[![License](https://poser.pugx.org/joomla/test/license)](https://packagist.org/packages/joomla/test)This package is a collection of tools that make some of the jobs of unit testing easier.
## TestHelper
`Joomla\Test\TestHelper` is a static helper class that can be used to take some of the pain out of repetitive tasks whilst unit testing with PHPUnit.
### Mocking
There are two methods that help with PHPUnit mock objects.
#### `TestHelper::assignMockCallbacks`
This helper method provides an easy way to configure mock callbacks in bulk.
```php
use Joomla\Test\TestHelper;class FooTest extends \PHPUnit_Framework_TestCase
{
public function testFoo()
{
// Create the mock.
$mockFoo = $this->getMock(
'Foo',
// Methods array.
array(),
// Constructor arguments.
array(),
// Mock class name.
'',
// Call original constructor.
false
);$mockCallbacks = array(
// 'Method Name' =>
'method1' => array('\mockFoo', 'method1'),
'method2' => array($this, 'mockMethod2'),
);TestHelper::assignMockCallbacks($mockFoo, $this, $mockCallbacks);
}public function mockMethod2($value)
{
return strtolower($value);
}
}```
#### `TestHelper::assignMockReturns`
This helper method provides an easy way to configure mock returns values in bulk.
```php
use Joomla\Test\TestHelper;class FooTest extends \PHPUnit_Framework_TestCase
{
public function testFoo()
{
// Create the mock.
$mockFoo = $this->getMock(
'Foo',
// Methods array.
array(),
// Constructor arguments.
array(),
// Mock class name.
'',
// Call original constructor.
false
);$mockReturns = array(
// 'Method Name' => 'Canned return value'
'method1' => 'canned result 1',
'method2' => 'canned result 2',
'method3' => 'canned result 3',
);TestHelper::assignMockReturns($mockFoo, $this, $mockReturns);
}
}```
### Reflection
There are three methods that help with reflection.
#### `TestHelper::getValue`
The `TestHelper::getValue` method allows you to get the value of any protected or private property.
```php
use Joomla\Test\TestHelper;class FooTest extends \PHPUnit_Framework_TestCase
{
public function testFoo()
{
$instance = new \Foo;// Get the value of a protected `bar` property.
$value = TestHelper::getValue($instance, 'bar');
}
}```
This method should be used sparingly. It is usually more appropriate to use PHPunit's `assertAttribute*` methods.
#### `TestHelper::setValue`
The `TestHelper::setValue` method allows you to set the value of any protected or private property.
```php
use Joomla\Test\TestHelper;class FooTest extends \PHPUnit_Framework_TestCase
{
public function testFoo()
{
$instance = new \Foo;// Set the value of a protected `bar` property.
TestHelper::setValue($instance, 'bar', 'New Value');
}
}```
This method is useful for injecting values into an object for the purpose of testing getter methods.
#### `TestHelper::invoke`
The `TestHelper::invoke` 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.
```php
use Joomla\Test\TestHelper;class FooTest extends \PHPUnit_Framework_TestCase
{
public function testFoo()
{
$instance = new \Foo;// Invoke the protected `bar` method.
$value1 = TestHelper::invoke($instance, 'bar');// Invoke the protected `bar` method with arguments.
$value2 = TestHelper::invoke($instance, 'bar', 'arg1', 'arg2');
}
}
```## Installation via Composer
Add `"joomla/test": "~2.0"` to the require block in your composer.json and then run `composer install`.
```json
{
"require": {
"joomla/test": "~2.0"
}
}
```Alternatively, you can simply run the following from the command line:
```sh
composer require joomla/test "~2.0"
```