2

私はテスト駆動開発に少し慣れていないので、できるだけ多くのコードをカバーする方法を学びたいと思っています。そうすれば、Rails でより複雑なアプリを作成するときに、バグの発生を防ぐことができます。

スタイルが Twitter Bootstrap クラスにメッセージをフラッシュするコードがいくつかapplication_helper.rbあります。私が書いたコードのテストを書きたいので、何かが変更された場合、少し問題になる前にそれについて知ることができます。

#application_helper.rb
module ApplicationHelper
  def flash_class(type)
    case type
    when :alert
      "alert-error"
    when :notice
      "alert-info"
    else
      ""
    end
  end
end

私のapplication.html.erbビューには、上記のヘルパー メソッドを使用してフラッシュ メッセージを表示する次のコードがあります。

#application.html.erb
<% flash.each do |type, message| %>
  <div class="alert <%= flash_class type %>">
    <button type="button" class="close" data-dismiss="alert">&times;</button>
    <%= message %>
  </div>
<% end %>

コードが機能することをテストするには、どのような種類のテストを作成application_helper.rbすればよいでしょうか? また、そのテストをどのように作成すればよいでしょうか? また、テスト作成にはshoulda-context gem を使用していますが、テストが標準の Railstest_with_lots_of_underscoresスタイルで作成されているかどうかは気にしません。

Cloud9を使用して、Ruby 1.9.3 (パッチ レベル 327) と Rails 3.2.13 でアプリケーションを作成しています。私が取り組んでいるアプリのリポジトリは、この Github リポジトリにあります

4

1 に答える 1

0

このようなものはどうですか:

class ApplicationHelperTest < Test::Unit::TestCase
  context "flash_class" do

    should "map :alert symbol to 'alert-error' string" do
      assert_equal 'alert-error', flash_class(:alert)
    end

    should "map :notice symbol to 'alert-info' string" do
      assert_equal 'alert-info', flash_class(:notice)
    end

    should "map anything else to empty string" do
      assert_equal '', flash_class(:blah)
    end

  end
end
于 2013-04-18T16:22:19.440 に答える