nova nova - 2 months ago 13
PHP Question

how to test if variables exists in function with phpunit

I am writing Unit-Tests for a Class looking like this:

class example {

public function __construct($param1, $param2) {
$this->param1 = $param1
$this->param2 = $param2
}
}


Is it possible to test if $this->param1 and $this->param2 exists after the constructor is executed? I already googled for this but didn't found a valid answer to this. I tried it with the Assertion contain, but this didn't work too.

Answer

If you want to see whether properties have been assigned the specified values in the resulting object, use Reflection class. In your example, if you properties are public:

public function testInitialParams()
{
    $value1 = 'foo';
    $value2 = 'bar';
    $example = new Example($value1, $value2); // note that Example is using 'Standing CamelCase'
    $sut = new \ReflectionClass($example);

    $prop1 = $sut->getProperty('param1');
    $prop1->setAccessible(true); // Needs to be done to access protected and private properties
    $this->assertEquals($prop2->getValue($example), $value1, 'param1 got assigned the correct value');

    $prop2 = $sut->getProperty('param2');
    $prop2->setAccessible(true);
    $this->assertEquals($prop2->getValue($example), $value2, 'param2 got assigned the correct value');
}