5

PHPでのマジックメソッドのユニットテスト実装に関して、それらのメソッドを呼び出すための推奨される手段は何ですか?

利用可能な3つのオプションがあります。

  • それらを明示的/直接呼び出す:

    $object->__get('someValue');

  • それらを間接的に呼び出す(それらをトリガーすることを目的としたアクションを使用して):

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

  • 両方の方法を使用してそれらを呼び出します。

どちらが(もしあれば)明白な選択であるか、そしてなぜそれがそうなるのかを説明できるユニットテストのベテランはいますか?

(これは主観的/討論の領域の近くで踊っている可能性がありますが、この質問に取り組むときに考慮すべき一般的に受け入れられている原則があることを期待して尋ねます。)

4

1 に答える 1

6

観察可能な動作をテストする必要があります。したがって、2番目の($obj->property)をテストする必要があります。間違いありません。

実際にゲッターを直接呼び出すことに関しては、それは判断の呼びかけです。あなたが言ったら__get('someProperty')、私の意見では、あなたはそれが魔法の財産であるとほとんど石に設定しました。私はテストを決して変更しないようにしているので、何らかの理由でそれを昔ながらの非魔法のプロパティにしたい場合は、かなり複雑になります。プラス面としては、ゲッターを呼び出してプロパティを逆に取得し、両方がまったく同じ結果になるようにすることができます。

于 2012-10-30T22:51:48.113 に答える