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