3

Rails 3.2 と最新の Rspec および Capybara を使用しています。つまり、私の Capybara 仕様はspec/features.

私は Rails とテストに本当に慣れていませんが、テストに慣れたいと思っています。テストする前にOAuthを実装することになりました。ようやく機能するようになりました。今はさかのぼってテストしようとしています(したがって、少なくとも将来壊れるかどうかはわかります)。このチュートリアルに従おうとしていますが、うまくいきません。これが私がしたことです:

1) 作成者spec/support/integration_spec_helper.rb:

module IntegrationSpecHelper def login_with_oauth(service = :google) visit "/auth/#{service}" end end

2) do ブロック内spec/spec_helperに含めるように変更。config.include IntegrationSpecHelper, :type => :requestRspec.configure

3) 作成者spec/features/omniauth_spec.rb:

require 'spec_helper'
feature 'testing oauth' do
  scenario 'should create a new tiger' do
    login_with_oauth
    visit new_tiger_path

    fill_in 'tiger_name', :with => 'Charlie'
    fill_in 'tiger_blood', :with => 'yes'

    click_on 'Create Tiger'

    page.should have_content("Thanks! You are a winner!")
  end
end

もちろん失敗しますが(アプリにトラはありません)、で失敗したいですvisit new_tiger_path。代わりに、仕様を実行すると、次のようになります。

1) testing oauth should create a new tiger Failure/Error: login_with_oauth NameError: undefined local variable or method `login_with_oauth' for #<RSpec::Core::ExampleGroup::Nested_3:0x83355d8> # ./spec/features/omniauth_spec.rb:4:in `block (2 levels) in <top (required)>'

基本的には、そんなことはないと言っているlogin_with_oauth。なんらかの理由でコードが含まれていないため、これは本当に基本的なエラーに違いありません。

私はスポークを使用していません (物事をシンプルにしようとしています)。

何が問題なのかわかりますか?前もって感謝します!

4

2 に答える 2

0

少し遅くなりましたが、お力になれるかもしれません。同じ問題が発生しました。それはによって引き起こされます

config.include IntegrationSpecHelper, :type => :request

rspec 機能テストを作成するため、パラメータ ':type' を ':feature' に変更する必要があります。

解決:

config.include IntegrationSpecHelper, :type => :feature

残念ながら、これはさらなる問題を引き起こします。私はまだ解決できませんでした。

よろしく、C-

于 2013-03-13T10:46:37.527 に答える