Как создать mock метода с аргументами ссылками в PHP

Apr 05, 2013 14:29

Как создать mock метода с аргументами ссылками

Иногда при тестировании требуется создать mock-заглушку для метода, для которого важно не возвращаемое значение, а измененные параметры переданные по ссылке.
В PHPUnit для этого можно использовать метод returnCallback() передавая ему имитирующую функциональность функцию обратного вызова.
Метод, для которого создается заглушка, может быть public или protected.

Например:

class A
{
    function getReference(&$ref)
    {
        $ref = 99;
        return 0;
    }
}

class ATest extends PHPUnit_Framework_TestCase
{  
    function testgetReference()
    {
        $f = function(&$ref)
        {
            $ref = 100;
            return true;
        };

$mock = $this->getMock('A');
        $mock->expects($this->any())
            ->method('getReference')
            ->will($this->returnCallback($f));

$return = $mock->getReference($a);
        $this->assertEquals(100, $a);
        $this->assertTrue($return);
    }
}

программирование, phpunit, тестирование, php

Previous post Next post
Up