PHPUnit Как получить РЕАЛЬНОЕ возвращаемое значение смоделированного метода?
Как я могу получить реальное возвращаемое значение макета класса / метода? Я нашел много возможностей вернуть фиксированные значения, но я хочу получить результат смоделированного метода, который я вызываю
Обновление пространства имен \Model; класс TestClass { публичная функция testFunction(){ возврат 12345; } }
класс DatabaseTest extends PHPUnit_Framework_TestCase {публичная функция testMock(){ $mock = $this->getMock('Updater\Model\TestClass', array('testFunction')); $mock-> Ожидает ($this-> Once())-> Метод ('testFunction') // Вызов Funciton.... здесь я хотел бы получить значение 12345 $result = $mock->testFunction(); } }
Я не нашел ничего, как получить реальное возвращаемое значение.... разочарование:)
2 ответа
Вы можете сделать это в PHPunit. Вот мой пример. Посмотрите на getMock
метод, в котором вы должны указать, какой метод вы хотите издеваться.
<?php
namespace Acme\DemoBundle\Tests;
class TestClass
{
public function testFunction(){
return 12345;
}
public function iWantToMockThis()
{
return 'mockME!';
}
}
class DatabaseTest extends \PHPUnit_Framework_TestCase
{
public function testMock(){
$mock = $this->getMock('Acme\DemoBundle\Tests\TestClass', array('iWantToMockThis'));
$mock->expects($this->once())
->method('iWantToMockThis')
->willReturn("Mocked!");
// The Real value
$this->assertEquals(12345,$mock->testFunction());
// The mocked value
$this->assertEquals("Mocked!",$mock->iWantToMockThis());
}
}
Надеюсь, это поможет.
AFAIK, вы не можете сделать это с родными макетами PHPUnit. Существует библиотека Mockery, которая может сделать это:
http://docs.mockery.io/en/latest/reference/expectations.html
искать passthru()
метод.
Тем не менее, это не очень обычно, что вам нужно вызвать реальный метод из макета. Можете ли вы объяснить реальный случай? Вы имитируете методы, чтобы контролировать их поведение (возвращаемое значение, исключение и т. Д.).