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 => :request
Rspec.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
。なんらかの理由でコードが含まれていないため、これは本当に基本的なエラーに違いありません。
私はスポークを使用していません (物事をシンプルにしようとしています)。
何が問題なのかわかりますか?前もって感謝します!