Stub
### Usage in Codeception
Since Codeception 2.3.8 this trait is enabled in \Codeception\Test\Unit
class.
Usage in PHPUnit
Include this trait into a TestCase to be able to use Stubs and Mocks:
<?php
class MyTest extends \PHPUnit\Framework\TestCase
{
use Codeception\Test\Feature\Stub;
}
Table of Contents
Properties
- $mocks : mixed
Methods
- construct() : MockObject|RealInstanceType
- Instantiates a class instance by running constructor.
- constructEmpty() : MockObject|RealInstanceType
- Instantiates a class instance by running constructor with all methods replaced with dummies.
- constructEmptyExcept() : MockObject|RealInstanceType
- Instantiates a class instance by running constructor with all methods replaced with dummies, except one.
- make() : MockObject|RealInstanceType
- Instantiates a class without executing a constructor.
- makeEmpty() : MockObject|RealInstanceType
- Instantiates class having all methods replaced with dummies.
- makeEmptyExcept() : MockObject|RealInstanceType
- Instantiates class having all methods replaced with dummies except one.
- stubEnd() : mixed
- stubStart() : mixed
Properties
$mocks
private
mixed
$mocks
Methods
construct()
Instantiates a class instance by running constructor.
public
construct(RealInstanceType>|RealInstanceType|callable(): RealInstanceType> $class[, array<string|int, mixed> $constructorParams = [] ][, array<string|int, mixed> $params = [] ]) : MockObject|RealInstanceType
Parameters for constructor passed as second argument Properties and methods can be set in third argument. Even protected and private properties can be set.
<?php
$this->construct('User', ['autosave' => false]);
$this->construct('User', ['autosave' => false], ['name' => 'davert']);
?>
Accepts either name of class or object of that class
<?php
$this->construct(new User, ['autosave' => false), ['name' => 'davert']);
?>
To replace method provide it's name as a key in third parameter and it's return value or callback function as parameter
<?php
$this->construct('User', [], ['save' => function () { return true; }]);
$this->construct('User', [], ['save' => true]);
?>
Parameters
- $class : RealInstanceType>|RealInstanceType|callable(): RealInstanceType>
-
- A class to be mocked
- $constructorParams : array<string|int, mixed> = []
- $params : array<string|int, mixed> = []
Tags
Return values
MockObject|RealInstanceTypeconstructEmpty()
Instantiates a class instance by running constructor with all methods replaced with dummies.
public
constructEmpty(RealInstanceType>|RealInstanceType|callable(): RealInstanceType> $class[, array<string|int, mixed> $constructorParams = [] ][, array<string|int, mixed> $params = [] ]) : MockObject|RealInstanceType
Parameters for constructor passed as second argument Properties and methods can be set in third argument. Even protected and private properties can be set.
<?php
$this->constructEmpty('User', ['autosave' => false]);
$this->constructEmpty('User', ['autosave' => false), ['name' => 'davert']);
Accepts either name of class or object of that class
<?php
$this->constructEmpty(new User, ['autosave' => false], ['name' => 'davert']);
To replace method provide it's name as a key in third parameter and it's return value or callback function as parameter
<?php
$this->constructEmpty('User', array(), array('save' => function () { return true; }));
$this->constructEmpty('User', array(), array('save' => true));
To create a mock, pass current testcase name as last argument:
<?php
$this->constructEmpty('User', [], [
'save' => \Codeception\Stub\Expected::once()
]);
Parameters
- $class : RealInstanceType>|RealInstanceType|callable(): RealInstanceType>
-
- A class to be mocked
- $constructorParams : array<string|int, mixed> = []
- $params : array<string|int, mixed> = []
Tags
Return values
MockObject|RealInstanceTypeconstructEmptyExcept()
Instantiates a class instance by running constructor with all methods replaced with dummies, except one.
public
constructEmptyExcept(RealInstanceType>|RealInstanceType|callable(): RealInstanceType> $class, string $method[, array<string|int, mixed> $constructorParams = [] ][, array<string|int, mixed> $params = [] ]) : MockObject|RealInstanceType
Parameters for constructor passed as second argument Properties and methods can be set in third argument. Even protected and private properties can be set.
<?php
$this->constructEmptyExcept('User', 'save');
$this->constructEmptyExcept('User', 'save', ['autosave' => false], ['name' => 'davert']);
?>
Accepts either name of class or object of that class
<?php
$this->constructEmptyExcept(new User, 'save', ['autosave' => false], ['name' => 'davert']);
?>
To replace method provide it's name as a key in third parameter and it's return value or callback function as parameter
<?php
$this->constructEmptyExcept('User', 'save', [], ['save' => function () { return true; }]);
$this->constructEmptyExcept('User', 'save', [], ['save' => true]);
?>
Parameters
- $class : RealInstanceType>|RealInstanceType|callable(): RealInstanceType>
-
- A class to be mocked
- $method : string
- $constructorParams : array<string|int, mixed> = []
- $params : array<string|int, mixed> = []
Tags
Return values
MockObject|RealInstanceTypemake()
Instantiates a class without executing a constructor.
public
make(RealInstanceType>|RealInstanceType|callable(): RealInstanceType> $class[, array<string|int, mixed> $params = [] ]) : MockObject|RealInstanceType
Properties and methods can be set as a second parameter. Even protected and private properties can be set.
<?php
$this->make('User');
$this->make('User', ['name' => 'davert']);
?>
Accepts either name of class or object of that class
<?php
$this->make(new User, ['name' => 'davert']);
?>
To replace method provide it's name as a key in second parameter and it's return value or callback function as parameter
<?php
$this->make('User', ['save' => function () { return true; }]);
$this->make('User', ['save' => true]);
Parameters
- $class : RealInstanceType>|RealInstanceType|callable(): RealInstanceType>
-
- A class to be mocked
- $params : array<string|int, mixed> = []
-
- properties and methods to set
Tags
Return values
MockObject|RealInstanceType —- mock
makeEmpty()
Instantiates class having all methods replaced with dummies.
public
makeEmpty(RealInstanceType>|RealInstanceType|callable(): RealInstanceType> $class[, array<string|int, mixed> $params = [] ]) : MockObject|RealInstanceType
Constructor is not triggered. Properties and methods can be set as a second parameter. Even protected and private properties can be set.
<?php
$this->makeEmpty('User');
$this->makeEmpty('User', ['name' => 'davert']);
Accepts either name of class or object of that class
<?php
$this->makeEmpty(new User, ['name' => 'davert']);
To replace method provide it's name as a key in second parameter and it's return value or callback function as parameter
<?php
$this->makeEmpty('User', ['save' => function () { return true; }]);
$this->makeEmpty('User', ['save' => true));
Parameters
- $class : RealInstanceType>|RealInstanceType|callable(): RealInstanceType>
-
- A class to be mocked
- $params : array<string|int, mixed> = []
Tags
Return values
MockObject|RealInstanceTypemakeEmptyExcept()
Instantiates class having all methods replaced with dummies except one.
public
makeEmptyExcept(RealInstanceType>|RealInstanceType|callable(): RealInstanceType> $class, string $method[, array<string|int, mixed> $params = [] ]) : MockObject|RealInstanceType
Constructor is not triggered. Properties and methods can be replaced. Even protected and private properties can be set.
<?php
$this->makeEmptyExcept('User', 'save');
$this->makeEmptyExcept('User', 'save', ['name' => 'davert']);
?>
Accepts either name of class or object of that class
<?php
* $this->makeEmptyExcept(new User, 'save');
?>
To replace method provide it's name as a key in second parameter and it's return value or callback function as parameter
<?php
$this->makeEmptyExcept('User', 'save', ['isValid' => function () { return true; }]);
$this->makeEmptyExcept('User', 'save', ['isValid' => true]);
Parameters
- $class : RealInstanceType>|RealInstanceType|callable(): RealInstanceType>
-
- A class to be mocked
- $method : string
- $params : array<string|int, mixed> = []
Tags
Return values
MockObject|RealInstanceTypestubEnd()
protected
stubEnd(mixed $status, mixed $time) : mixed
Parameters
- $status : mixed
- $time : mixed
stubStart()
protected
stubStart() : mixed