テストの仕方を学ぶのは難しい!私は 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 のコードベースにこのようなものを含めるのは、確かに少し早いように思えます。誰が私が間違っているのか教えてもらえますか?