【问题标题】:Unit Testing Magic Methods单元测试魔术方法
【发布时间】:2012-10-20 08:43:40
【问题描述】:

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

我看到三个可用选项:

  • 显式/直接调用它们:

    $object->__get('someValue');

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

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

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

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

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

【问题讨论】:

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

标签: php unit-testing phpunit


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 2015-08-08
    相关资源
    最近更新 更多