1

Minitestの次のスタイルのテストの書き方を知っています...

「minitest_helper」が必要

クラスApplicationHelperTest<ActionView:: TestCase
  def test_nav_element_for_current_page
    self.stub(:current_page ?, true)do
      nav_element('Home'、'#')。must_equal(
        '<li class = "active"> <ahref = "#">ホーム</ li>')
    終わり
  終わり

  def test_nav_element_for_non_current_page
    self.stub(:current_page ?, false)do
      nav_element('Home'、'#')。must_equal(
        '<li> <ahref = "#">ホーム</ li>')
    終わり
  終わり
終わり

...でもスペック形式で書きたいです。これが私が試したものですが、機能しません:

「minitest_helper」が必要

ApplicationHelperの説明
  それは「現在のページのnav_element」を実行します
    self.stub(:current_page ?, true)do
      nav_element('Home'、'#')。must_equal(
        '<li class = "active"> <ahref = "#">ホーム</ li>')
    終わり
  終わり

  それは「非現在のページのnav_element」を実行します
    self.stub(:current_page ?, false)do
      nav_element('Home'、'#')。must_equal(
        '<li> <ahref = "#">ホーム</ li>')
    終わり
  終わり
終わり

ApplicationHelper自動的に含める必要があるMinitestにどのように伝えますActionView::TestCaseか?私はまだ運がないのに、いくつかのことを試しました。

背景として、application_helper.rb以下が含まれます。

モジュールApplicationHelper
  def nav_element(text、path)
    オプション={}
    options [:class] ='active' if current_page?(path)
    link_tag = content_tag(:a、text、href:path)
    content_tag(:li、link_tag、options)
  終わり
終わり

私はこれらのバンドルされた宝石を使用しています:

  *レール(3.2.6)
  *ミニテスト(3.2.0)
  *ミニテストレール(0.1.0.alpha.20120525143907 7733031)

(これは(https://github.com/blowmage/minitest-rails)のヘッドバージョンであることに注意してくださいminitest_rails。)

4

2 に答える 2

3

MiniTest::Railsは今朝までActionView::TestCaseを実装しませんでした。これを私の注意を引いてくれてありがとう!:)

この修正は0.1リリースで行われます。今のところ、Gemfileを変更してminitest-rails、私のgitリポジトリにリンクします。

gem "minitest-rails", :git => "git://github.com/blowmage/minitest-rails.git"

編集:これは現在機能します。コードは次のようになります。

require "minitest_helper"

describe ApplicationHelper do
  it "nav_element for current page" do
    # Stub with Ruby!
    def self.current_page?(path); true; end
    nav_element('Home', '#').must_equal(
      '<li class="active"><a href="#">Home</a></li>')
  end

  it "nav_element for non-current page" do
    def self.current_page?(path); false; end
    nav_element('Home', '#').must_equal(
      '<li><a href="#">Home</a></li>')
  end
end

それはあなたがする必要があるすべてであるはずです。他に問題がある場合は、メーリングリストでディスカッションを開始してください。https://groups.google.com/group/minitest-rails

于 2012-07-07T16:33:17.390 に答える
1

おそらくmintiest-spec-railsを使用すると、ジェネレーターなどを使用する必要があるすべての問題が解決され、MiniTest :: Specアサーションと構文を使用できるようにしながら、既存のRailsユニット、汎関数、統合テストを正しく機能させることができます。

于 2012-07-07T15:42:48.810 に答える