如何使用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.

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');
}

You haven't declared any visibility on $this->param1 or $this->param2, so by default they will be public.

With this in mind, you ought to just be able to test like the following:

public function testConstructorSetsParams()
{
    $param1 = 'testVal1';
    $param2 = 'testVal2';

    $object = new example($param1, $param2);

    $this->assertEquals($param1, $object->param1);
    $this->assertEquals($param2, $object->param2);
}

There is an assertion assertAttributeSame() that allows you to look at public, protected and private properties of a class.

See the example:

class ColorTest extends PHPUnit_Framework_TestCase {
public function test_assertAttributeSame() {

    $hasColor = new Color();

    $this->assertAttributeSame("red","publicColor",$hasColor);
    $this->assertAttributeSame("green","protectedColor",$hasColor);
    $this->assertAttributeSame("blue","privateColor",$hasColor);

    $this->assertAttributeNotSame("wrong","privateColor",$hasColor);
    }

}