次のコントローラーのテスト ケースがあります。
def test_showplain
Cleaner.expect(:parse).with(@somecontent)
Cleaner.any_instance.stubs(:plainversion).returns(@returnvalue)
post :showplain, {:content => @somecontent}
end
「stubs(:plainversion)」を「expects(:plainversion)」にしたいことを除いて、これはうまくいきます。
コントローラーのコードは次のとおりです。
def showplain
Cleaner.parse(params[:content]) do | cleaner |
@output = cleaner.plainversion
end
end
そしてクリーナーは単純です:
class Cleaner
### other code and methods ###
def self.parse(@content)
cleaner = Cleaner.new(@content)
yield cleaner
cleaner.close
end
def plainversion
### operate on @content and return ###
end
end
繰り返しますが、「parse」メソッドから利用できる「クリーナー」を確実にテストする方法がわかりません。助言がありますか?