はい、プライベートメソッドをテストするのは良い考えではないことを私は知っています(そして私はこのスレッドを読みました - http://www.ruby-forum.com/topic/197346 - そして他のいくつか)
しかし、どうすれば次のコードをテストできますか?
xmpp4rを使用しています。私のパブリック メソッドでは、次の#listen
ような jabber メッセージの受信を開始します。
def listen
@client.add_message_callback do |m|
do_things_with_message(m)
end
end
private
def do_things_with_message(m)
#
end
#add_message_callback
- メッセージが来ると、ブロックを実行します (別のスレッドで)
したがって、テスト#listen
方法は難しく、私のテストよりも xmpp4r のテストの方が多いです。#do_things_with_message
どうすれば大丈夫#do_things_with_message
ですか?:) ( http://www.ruby-forum.com/topic/197346#859664 )
プライベートメソッドを新しいオブジェクトにリファクタリングすることは、本質的にそれらをパブリックにすることです(そして1つのメソッドを持つクラス-それは無意味です
編集:
これは、クリーンなコードと正しいテストに関する理論的な質問です。私の最初のリンクでは、人々はプライベートメソッドのテストが不十分であると主張しています。でチートしたくありません#send
が、リファクタリングする実行可能な方法も見当たりません