Ruby on Rails を使用してブログ用のアプリケーションに取り組んでいます。Draper Decorator を使用した Essay というモデルがあります。このアプリケーションのテストには MiniTest::Spec も使用しています。各エッセイには本文があり、Markdown として保存されます。EssayDecorator には、RedCarpet を使用して Markdown を html にレンダリングする body というメソッドがあります。
この方法をテストするために、次のコードを書きました。
describe '#body' do
it 'returns html from the markdown' do
essay = FactoryGirl.create(:essay)
@decorated_essay = essay.decorate
markdown = Minitest::Mock.new
@decorated_essay.stub :markdown, markdown do
markdown.expect :render, "<p>Test</p>", [essay.body]
@decorated_essay.send(:body)
markdown.verify
end
end
end
デコレータ内には、次の 2 つのメソッドがあります。
def body
markdown.render(model.body).html_safe
end
def markdown
Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true, :space_after_headers => true)
end
このテストはパスしますが、私には奇妙に思えます。RedCarpet が機能していることをテストするのではなく、render メソッドを呼び出していることをテストしたいだけです。
MiniTest でこの種のものをモックアウトするためのベスト プラクティスはありますか? 私はモックを使用するのはかなり初めてで、MiniTest を使用するのは非常に初めてです。
前もって感謝します。