Spec-Zone.ru › Codeception

Моки

Объявляйте моки внутри класса 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API