3

これは StackOverflow に関する私の最初の質問です。

リスト 8.6の authentication_pages_spec.rb を使用すると、テストがパスします。次に、'spec/support/utilities.rb' で sign_in メソッドを定義し、リスト 9.5に従って authentication_pages_spec.rb を変更します。

$ bundle exec rspec spec/requests/authentication_pages_spec.rb -e "Authentication"

私は得る

1) Authentication signin with valid information 
     Failure/Error: before { sign_in user }
     NoMethodError:
       undefined method `sign_in' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_2::Nested_2:0x007fc585a87cd8>
     # ./spec/requests/authentication_pages_spec.rb:31:in `block (4 levels) in <top (required)>'

「有効な情報を含む」の下の6つのテストすべてについて。

仕様では sign_in 関数が表示されず、何らかの宣言が必要なようですが、とにかく、Github の Michael Hartl のコードでこれが行われている場所を見つけることができませんでした。

どんな助けでも本当に感謝しています。

4

3 に答える 3

1

スポークを再起動するだけで動作するはずです:)

于 2013-04-19T18:15:48.570 に答える
0

端の微妙な配置ミスに基づいて、まったく同じエラーメッセージが表示されました。他の人が同じテストの失敗に遭遇し、可能な解決策を探している場合に備えて、ここで共有します。

私の間違いは、utilities.rb の作成方法にありました。

include ApplicationHelper

RSpec::Matchers.define :have_error_message do |message|
    match do |page|
        page.should have_selector('div.alert.alert-error', text: 'Invalid')
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
end

ブロックの後に最終的endに必要なものは次のようになります。RSpec::Matchers

include ApplicationHelper

RSpec::Matchers.define :have_error_message do |message|
    match do |page|
        page.should have_selector('div.alert.alert-error', text: 'Invalid')
    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
于 2013-04-02T05:16:43.960 に答える
0

Hartl はリスト 9.6sign_inでその直後のヘルパーについて説明しています。

于 2012-11-16T05:36:41.913 に答える