Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 单元测试魔术方法_Php_Unit Testing_Phpunit - Fatal编程技术网

Php 单元测试魔术方法

Php 单元测试魔术方法,php,unit-testing,phpunit,Php,Unit Testing,Phpunit,当谈到PHP中magic方法的单元测试实现时,推荐使用什么方法来调用这些方法 我认为有三种选择: 显式/直接调用它们: $object->uu get('someValue') 间接调用它们(使用任何旨在触发它们的操作): $object->someValue;\\其中实现了uu get()。 使用这两种方法调用它们 是否有单元测试老手能够解释哪些(如果有的话)是显而易见的选择,以及为什么会这样 (这可能是接近主观/辩论的领域,但我希望在解决这个问题时,我希望有一些普遍接受的原则。)<

当谈到PHP中magic方法的单元测试实现时,推荐使用什么方法来调用这些方法

我认为有三种选择:

  • 显式/直接调用它们:

    $object->uu get('someValue')

  • 间接调用它们(使用任何旨在触发它们的操作):

    $object->someValue;\\其中实现了uu get()。

  • 使用这两种方法调用它们

是否有单元测试老手能够解释哪些(如果有的话)是显而易见的选择,以及为什么会这样

(这可能是接近主观/辩论的领域,但我希望在解决这个问题时,我希望有一些普遍接受的原则。)< P> > P>你应该测试可观察的行为。因此,毫无疑问,必须测试第二个(

$obj->property


至于直接呼叫getter,这更像是一种判断。一旦你说了
\u get('someProperty')
,在我看来,你几乎已经一成不变地认为它是一种神奇的属性。由于我试图从不更改测试,如果出于某种原因,我希望它是一个普通的、古老的非魔法属性,那么这会使事情变得复杂一些。另一方面,您可以调用getter,以另一种方式获取属性,并确保它们都具有完全相同的结果。

我不是专家,但第一种方法似乎会导致更好的(自我)记录测试。