Wil*_*lco 5 php phpunit unit-testing
当谈到PHP中魔术方法的单元测试实现时,调用这些方法的推荐方法是什么?
我看到三种选择:
明确/直接调用它们:
$object->__get('someValue');
间接调用它们(使用任何旨在触发它们的动作):
$object->someValue; \\ Where __get() is implemented.
使用两种方法调用它们.
是否有任何单元测试老手可以解释哪些(如果有的话)是明显的选择,为什么会这样?
(这可能会接近主观/辩论领域,但我希望在接近这个问题时我应该考虑一些普遍接受的原则.)
你应该测试可观察的行为.所以,第二个($obj->property)必须进行测试,毫无疑问.
至于直接实际调用getter,这更像是一个判断调用.一旦你说过__get('someProperty'),在我看来你几乎是一成不变的,它是一个神奇的财产.因为我试图永远不会改变测试,如果由于某种原因,我希望它是一个普通的非魔法属性,这会使事情变得复杂.从好的方面来说,你可以调用getter并以其他方式获取属性,并确保它们都具有完全相同的结果.