5

当谈到 PHP 中魔术方法的单元测试实现时,调用这些方法的推荐方法是什么?

我看到三个可用的选项:

  • 显式/直接调用它们:

    $object->__get('someValue');

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

    $object->someValue; \\ Where __get() is implemented.

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

是否有任何单元测试老手可以解释哪个(如果有)是显而易见的选择,为什么会这样?

(这可能接近主观/辩论领域,但我会问,希望在处理这个问题时我应该考虑一些普遍接受的原则。)

4

1 回答 1

6

您应该测试可观察的行为。所以,第二个 ( $obj->property)必须测试,毫无疑问。

至于实际直接调用 getter,那更像是一个判断调用。一旦你说过__get('someProperty'),在我看来,你几乎已经确定它是一个神奇的属性。由于我尝试从不更改测试,如果出于某种原因,我希望它成为一个普通的旧非魔法属性,这会使事情变得相当复杂。从好的方面来说,您可以调用 getter 并以另一种方式获取属性,并确保它们都具有完全相同的结果。

于 2012-10-30T22:51:48.113 回答