0
我是新来的测试,想知道是否有可能用PHPUnit定义对象参数。我试图在模拟上定义属性,并忽略它。是否可以在PHPUnit中定义对象参数?
$testMock = $this->getMock('ClassToMock');
$testMock->attribute = "something";
通过方法访问属性只是更好的做法吗?谢谢
我是新来的测试,想知道是否有可能用PHPUnit定义对象参数。我试图在模拟上定义属性,并忽略它。是否可以在PHPUnit中定义对象参数?
$testMock = $this->getMock('ClassToMock');
$testMock->attribute = "something";
通过方法访问属性只是更好的做法吗?谢谢
你不能通过mock API注入属性值。你可以通过反射机制来做到这一点。
$testMock = $this->getMock('ClassToMock');
$reflection = new ReflectionClass($testMock);
$reflection_property = $reflection->getProperty('attribute');
$reflection_property->setValue($testMock, 'something');
如果你需要那个“黑客”,可能你应该重构你的代码。
太棒了,谢谢。有人认为这是代码气味,但认为它更好地问。 – mrberggg