Моки
Объявляйте моки внутри класса Codeception\Test\Unit. Если вы хотите использовать моки вне его, обратитесь к документации библиотеки Codeception/Stub.
public make($class, $params = null)
Создаёт экземпляр класса без выполнения конструктора. Свойства и методы могут быть заданы во втором параметре. Можно устанавливать даже защищённые и приватные свойства.
<?php
$this->make('User');
$this->make('User', ['name' => 'davert']);
?> Принимает либо имя класса, либо объект этого класса
<?php $this->make(new User, ['name' => 'davert']); ?>
Для замены метода укажите его имя в качестве ключа во втором параметре, а его возвращаемое значение или функцию обратного вызова — в качестве параметра.
<?php
$this->make('User', ['save' => function () { return true; }]);
$this->make('User', ['save' => true]); @template RealInstanceType типа объекта
-
param class-string<RealInstanceType>|RealInstanceType|callable(): class-string<RealInstanceType>$class — класс, который нужно смокировать -
param array$params — свойства и методы для установки
@return \PHPUnit\Framework\MockObject\MockObject&RealInstanceType — мок @throws \RuntimeException если класс не существует @throws \Exception
public makeEmpty($class, $params = null)
Создаёт экземпляр класса, все методы которого заменены на дубликаты. Конструктор не вызывается. Свойства и методы могут быть заданы во втором параметре. Можно устанавливать даже защищённые и приватные свойства.
<?php
$this->makeEmpty('User');
$this->makeEmpty('User', ['name' => 'davert']); Принимает либо имя класса, либо объект этого класса
<?php $this->makeEmpty(new User, ['name' => 'davert']);
Для замены метода укажите его имя в качестве ключа во втором параметре, а его возвращаемое значение или функцию обратного вызова — в качестве параметра.
<?php
$this->makeEmpty('User', ['save' => function () { return true; }]);
$this->makeEmpty('User', ['save' => true)); @template RealInstanceType типа объекта
-
param class-string<RealInstanceType>|RealInstanceType|callable(): class-string<RealInstanceType>$class — класс, который нужно смокировать -
param array$params -
param bool|\PHPUnit\Framework\TestCase$testCase
@return \PHPUnit\Framework\MockObject\MockObject&RealInstanceType @throws \Exception
public makeEmptyExcept($class, $method, $params = null)
Создаёт экземпляр класса, все методы которого заменены на дубликаты, за исключением одного. Конструктор не вызывается. Свойства и методы можно заменить. Можно устанавливать даже защищённые и приватные свойства.
<?php
$this->makeEmptyExcept('User', 'save');
$this->makeEmptyExcept('User', 'save', ['name' => 'davert']);
?> Принимает либо имя класса, либо объект этого класса
<?php * $this->makeEmptyExcept(new User, 'save'); ?>
Для замены метода укажите его имя в качестве ключа во втором параметре, а его возвращаемое значение или функцию обратного вызова — в качестве параметра.
<?php
$this->makeEmptyExcept('User', 'save', ['isValid' => function () { return true; }]);
$this->makeEmptyExcept('User', 'save', ['isValid' => true]); @template RealInstanceType типа объекта
-
param class-string<RealInstanceType>|RealInstanceType|callable(): class-string<RealInstanceType>$class — класс, который нужно смокировать -
param string$method -
param array$params
@return \PHPUnit\Framework\MockObject\MockObject&RealInstanceType @throws \Exception
public construct($class, $constructorParams = null, $params = null)
Создаёт экземпляр класса, вызвав конструктор. Параметры конструктора передаются во втором аргументе. Свойства и методы можно задать в третьем аргументе. Можно устанавливать даже защищённые и приватные свойства.
<?php
$this->construct('User', ['autosave' => false]);
$this->construct('User', ['autosave' => false], ['name' => 'davert']);
?> Принимает либо имя класса, либо объект этого класса
<?php $this->construct(new User, ['autosave' => false), ['name' => 'davert']); ?>
Для замены метода укажите его имя в качестве ключа в третьем параметре, а его возвращаемое значение или функцию обратного вызова — в качестве параметра.
<?php
$this->construct('User', [], ['save' => function () { return true; }]);
$this->construct('User', [], ['save' => true]);
?> @template RealInstanceType типа объекта
-
param class-string<RealInstanceType>|RealInstanceType|callable(): class-string<RealInstanceType>$class — класс, который нужно смокировать -
param array$constructorParams -
param array$params -
param bool|\PHPUnit\Framework\TestCase$testCase
@return \PHPUnit\Framework\MockObject\MockObject&RealInstanceType @throws \Exception
public constructEmpty($class, $constructorParams = null, $params = null)
Создаёт экземпляр класса, вызвав конструктор, с заменой всех методов на дубликаты. Параметры конструктора передаются во втором аргументе. Свойства и методы можно задать в третьем аргументе. Можно устанавливать даже защищённые и приватные свойства.
<?php
$this->constructEmpty('User', ['autosave' => false]);
$this->constructEmpty('User', ['autosave' => false), ['name' => 'davert']); Принимает либо имя класса, либо объект этого класса
<?php $this->constructEmpty(new User, ['autosave' => false], ['name' => 'davert']);
Для замены метода укажите его имя в качестве ключа в третьем параметре, а его возвращаемое значение или функцию обратного вызова — в качестве параметра.
<?php
$this->constructEmpty('User', array(), array('save' => function () { return true; }));
$this->constructEmpty('User', array(), array('save' => true)); Для создания мока передайте текущее имя тестового случая в качестве последнего аргумента:
<?php
$this->constructEmpty('User', [], [
'save' => \Codeception\Stub\Expected::once()
]); @template RealInstanceType типа объекта
-
param class-string<RealInstanceType>|RealInstanceType|callable(): class-string<RealInstanceType>$class — класс, который нужно смокировать -
param array$constructorParams -
param array$params
@return \PHPUnit\Framework\MockObject\MockObject&RealInstanceType
public constructEmptyExcept($class, $method, $constructorParams = null, $params = null)
Создаёт экземпляр класса, вызвав конструктор, с заменой всех методов на дубликаты, за исключением одного. Параметры конструктора передаются во втором аргументе. Свойства и методы можно задать в третьем аргументе. Можно устанавливать даже защищённые и приватные свойства.
<?php
$this->constructEmptyExcept('User', 'save');
$this->constructEmptyExcept('User', 'save', ['autosave' => false], ['name' => 'davert']);
?> Принимает либо имя класса, либо объект этого класса
<?php $this->constructEmptyExcept(new User, 'save', ['autosave' => false], ['name' => 'davert']); ?>
Для замены метода укажите его имя в качестве ключа в третьем параметре, а его возвращаемое значение или функцию обратного вызова — в качестве параметра.
<?php
$this->constructEmptyExcept('User', 'save', [], ['save' => function () { return true; }]);
$this->constructEmptyExcept('User', 'save', [], ['save' => true]);
?> @template RealInstanceType типа объекта
-
param class-string<RealInstanceType>|RealInstanceType|callable(): class-string<RealInstanceType>$class — класс, который нужно смокировать -
param string$method -
param array$constructorParams -
param array$params
@return \PHPUnit\Framework\MockObject\MockObject&RealInstanceType
public static never($params = null)
Проверяет, был ли метод вызван никогда.
Если метод был вызван, сразу сгенерирует исключение.
<?php
use \Codeception\Stub\Expected;
$user = $this->make('User', [
'getName' => Expected::never(),
'someMethod' => function() {}
]);
$user->someMethod();
?> -
param mixed$params @return StubMarshaler
public static once($params = null)
Проверяет, был ли метод вызван ровно один раз.
Если количество вызовов меньше или больше, оно будет проверено в verify() и также сгенерирует исключение.
<?php
use \Codeception\Stub\Expected;
$user = $this->make(
'User',
array(
'getName' => Expected::once('Davert'),
'someMethod' => function() {}
)
);
$userName = $user->getName();
$this->assertEquals('Davert', $userName);
?> В качестве альтернативы, можно передать функцию в качестве параметра:
<?php
Expected::once(function() { return Faker::name(); }); -
param mixed$params
@return StubMarshaler
public static atLeastOnce($params = null)
Проверяет, был ли метод вызван хотя бы один раз.
Если количество вызовов равно 0, это вызовет исключение в verify.
<?php
use \Codeception\Stub\Expected;
$user = $this->make(
'User',
array(
'getName' => Expected::atLeastOnce('Davert')),
'someMethod' => function() {}
)
);
$user->getName();
$userName = $user->getName();
$this->assertEquals('Davert', $userName);
?> В качестве альтернативы, можно передать функцию в качестве параметра:
<?php
Expected::atLeastOnce(function() { return Faker::name(); }); -
param mixed$params
@return StubMarshaler
public static exactly($count, $params = null)
Проверяет, был ли метод вызван определенное количество раз. Если количество вызовов превышает заданное значение, оно сразу сгенерирует исключение. Если количество вызовов меньше, оно будет проверено в verify() и также сгенерирует исключение.
<?php
use \Codeception\Stub;
use \Codeception\Stub\Expected;
$user = $this->make(
'User',
array(
'getName' => Expected::exactly(3, 'Davert'),
'someMethod' => function() {}
)
);
$user->getName();
$user->getName();
$userName = $user->getName();
$this->assertEquals('Davert', $userName);
?> В качестве альтернативы, можно передать функцию в качестве параметра:
<?php
Expected::exactly(function() { return Faker::name() }); -
param int$count -
param mixed$params
@return StubMarshaler
© 2011 Michael Bodnarchuk and contributors
Licensed under the MIT License.
https://codeception.com/docs/reference/Mock