1

RailsTutorialを使用していますが、9.3章でスタックしています。9.3の終わりにスイートテストを実行しようとすると、Rspecはこれらのエラーを出し続けます。

/Users/shaan/Sites/sample_app/spec/support/utilities.rb:15:in `sign_in': undefined local variable or method `signin_path' for #<Class:0x107759358> (NameError)

/Library/Ruby/Gems/1.8/gems/activerecord-3.2.3/lib/active_record/validations.rb:56:in `save!': Validation failed: Email has already been taken (ActiveRecord::RecordInvalid)

最初に一番上のエラーが発生し、次にテストを何度も実行すると、2番目のエラーが発生し続けます。

以下は私のコントローラールートとテストファイルです。

Utilities.rb:

include ApplicationHelper

def full_title(page_title)
  base_title = "Ruby on Rails Tutorial Sample App"
  if page_title.empty?
    base_title
  else
    "#{base_title} | #{page_title}"
  end
end


def sign_in(user)
  visit signin_path
  fill_in "Email",    :with => user.email
  fill_in "Password", :with => user.password
  click_button "Sign in"
  # Sign in when not using Capybara as well.
  cookies[:remember_token] = user.remember_token
end

私が間違っていることについて何か考えはありますか?

4

2 に答える 2

2

この行を確認してください

def sign_in(user)
visit signin_path
...
end

signin_path間違っているようです。実行rake routesして正しいパスを取得し、それを次のように置き換えますsignin_path

于 2012-04-24T03:18:22.710 に答える
0

私もこの紛らわしいエラーを追いかけるのに長い時間を費やしました。私の場合、問題はRailsバージョン間の違いでした。'spec/requests'ディレクトリの名前を'features'に変更してみてください

于 2014-10-08T20:32:26.160 に答える