0

PHPUnitを使用して、クラスMailのメソッドでテストを作成しようとしています。私がテストしているメソッドはsaveMessage($ arguments)です。saveMessageは、保存に加えて、クラスメソッドを呼び出すこともできます$this->emailMessage( $arguments )。saveMessageをテストし、emailMessageが(正しい引数で)正しく呼び出されることをテストするテストを作成したいのですが、実際のemailMessageメソッドを呼び出しません。

私がそれを行うことができる1つの方法は、Mailをサブクラス化し、emailMessageメソッドをオーバーライドすることです。より魅力的な方法は、モックされたオブジェクトでsaveMessageメソッドをテストしながら、Messagesクラスをモックし、emailMessageメソッドをオーバーライドすることです。ただし、モックオブジェクト自体をテストします。それは悪い考えだと読みましたが、この場合、理由は完全にはわかりません。この目的でモックオブジェクトを使用しても安全ですか?これを処理するためのより良い方法はありますか?

4

1 に答える 1

0

これは、 「何をテストし、何をテストしないか」というカテゴリに該当すると思います。コードを知らなければ、この質問に答えるのは難しいです。

たとえば、なぜ引数が正しくないのでしょうか? 彼らは操作されていますか?操作コードを独自のメソッドに入れ、それを単体テストすることができます。

または、メソッドでアサートsaveMessageを使用して、アサーション エラーがトリガーされないことを単体テストでチェックすることもできます。

私が言えることは、この質問は、コードのテストと同じくらいコードの設計に関するものです。

于 2012-09-07T21:26:36.263 に答える