gpt4 book ai didi

php - 模拟测试和 PHP 神奇的 __get 方法

转载 作者:可可西里 更新时间:2023-10-31 23:26:42 25 4
gpt4 key购买 nike

我在尝试使用 __get__set 方法(使用 simpletest)模拟对象时遇到问题。

__get 编写模拟响应闻起来不对 - 测试似乎与实现紧密相关。有什么测试建议,还是我应该完全避免使用魔术方法?

最佳答案

我遇到了同样的问题,并在 SimpleTest 测试用例中找到了解决方案:

来自 mock_objects_test.php:

class ClassWithSpecialMethods {
function __get($name) { }
function __set($name, $value) { }
function __isset($name) { }
function __unset($name) { }
function __call($method, $arguments) { }
function __toString() { }
}
Mock::generate('ClassWithSpecialMethods');

...剪断...

function testReturnFromSpecialAccessor() {
$mock = new MockClassWithSpecialMethods();
$mock->setReturnValue('__get', '1st Return', array('first'));
$mock->setReturnValue('__get', '2nd Return', array('second'));
$this->assertEqual($mock->first, '1st Return');
$this->assertEqual($mock->second, '2nd Return');
}

function testcanExpectTheSettingOfValue() {
$mock = new MockClassWithSpecialMethods();
$mock->expectOnce('__set', array('a', 'A'));
$mock->a = 'A';
}

有点笨拙,但很管用。另一方面,我认为你最好避免使用它们……我正在研究的大型企业系统大量使用它们,理解/可视化/调试/做任何事情都是一场噩梦!

关于php - 模拟测试和 PHP 神奇的 __get 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/169981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com