2014-02-19 20 views
0

我是新来的测试,想知道是否有可能用PHPUnit定义对象参数。我试图在模拟上定义属性,并忽略它。是否可以在PHPUnit中定义对象参数?

$testMock = $this->getMock('ClassToMock'); 
$testMock->attribute = "something"; 

通过方法访问属性只是更好的做法吗?谢谢

回答

0

你不能通过mock API注入属性值。你可以通过反射机制来做到这一点。

$testMock = $this->getMock('ClassToMock'); 
$reflection = new ReflectionClass($testMock); 
$reflection_property = $reflection->getProperty('attribute'); 
$reflection_property->setValue($testMock, 'something'); 

如果你需要那个“黑客”,可能你应该重构你的代码。

+0

太棒了,谢谢。有人认为这是代码气味,但认为它更好地问。 – mrberggg

相关问题