0

テストの仕方を学ぶのは難しい!私は MiniTest を実行しようとしていますが、それは闘争です。私は Ryan の RailsCasts を見て、この件に関するドキュメントをすべて読みました。

ヘルパー、モデル、およびリクエストのテストを行っている (または行おうとしている) だけです。現在、私のモデルとヘルパーのテストは失敗するためにスタブアウトされています。

ただし、実際の認証統合テストを作成しましたが、実行すらしていません!!! これを見てください:

➜  myapp git:(master) rake
==============================================================================
SUITE test/factories,test/helpers,test,test/models,test/requests (SEED 41025)
==============================================================================
User
     0001 must be a real test                                  0:00:00.005 FAIL
 0:00:00.005 ERROR
==============================================================================
SUITE test/factories,test/helpers,test,test/models,test/requests (SEED 12794)
==============================================================================
SessionsHelper
     0001 must be a real test                                  0:00:00.006 FAIL
 0:00:00.006 ERROR
Errors running models, helpers!

まあ、それはただのスーパーです。「test/requests」ディレクトリから実行しないのはなぜですか!

require 'minitest_helper'

describe "Login Integration" do

  it "authenticates a user with a password" do
    login_user
    assert page.has_content?('Logged in')
  end

  it "fails to authenticate a user with a mismatched password" do
    user = FactoryGirl.create(:user)
    visit login_path
    fill_in "Email", :with => user.email
    fill_in "Password", :with => "bad password"
    click_button "Log In"
    assert page.has_content?('Invalid email or password')
  end

  it "logs out a user" do
    login_user
    click_link "Log Out"
    assert page.has_content?('Logged out')
  end

end

ファイルの途中で「Joe Blow」と入力しても、構文エラーは発生しません。このファイルが取得されない理由はまったくありません。「ログイン統合」という名前を参照してください。まあ、それは私の minitest_helper.rb で次のようにバインドされています:

class IntegrationTest < MiniTest::Spec
  include Rails.application.routes.url_helpers
  include Capybara::DSL
  register_spec_type(/integration$/i, self)
end

Rails 4 のコードベースにこのようなものを含めるのは、確かに少し早いように思えます。誰が私が間違っているのか教えてもらえますか?

4

1 に答える 1

1

私はこれを理解した幸運です。テストが 2 回失敗すると、テストは停止します。これに関するドキュメントはまったく見つかりませんでした。

したがって、テストをスタブ化する場合は、次のようにします。

describe User do

  it "needs a real test"

end

これにより、テストが「スキップ」され、続行されます。

次のようにしないでください。

describe User do

  it "must have a real test" do

    flunk "needs a real test"

  end

end

そうすれば、テストが不思議なことに停止し、その理由を説明するものは何もないからです.

モデルとヘルパーのテストをスタブ化するのが好きです。次に、統合テストを作成し、途中で必要な単体テストを補足します。MiniTest でもそれを行うことができますが、2 つのエラーが発生すると停止します。コードを読んでいません。おそらく、そのしきい値を設定する方法があります。

于 2012-05-15T16:54:48.907 に答える