我正在嘗試使用OmniAuth和Devise編寫一個使用twitter進行登錄的集成測試。我無法獲取要設置的請求變量。它在控制器測試中工作,但不是集成測試,這導致我認爲我沒有正確配置規範助手。我環顧四周,但我似乎無法找到一個可行的解決方案。以下是我迄今爲止:Devise和OmniAuth twitter集成測試rspec
# spec/integrations/session_spec.rb
require 'spec_helper'
describe "signing in" do
before do
request.env["omniauth.auth"] = OmniAuth.config.mock_auth[:twitter]
visit new_user_session_path
click_link "Sign in with twitter"
end
it "should sign in the user with the authentication" do
(1+1).should == 3
end
end
該規範raies一個錯誤,纔可以得到測試,我不太肯定要初始化的變量request
需求。錯誤是:
Failure/Error: request.env["omniauth.auth"] = OmniAuth.config.mock_auth[:twitter]
NoMethodError:
undefined method `env' for nil:NilClass
現在我用的是request
變量在我的控制器規範和測試通過,但它沒有被用於集成測試初始化。
# spec/spec_helper.rb
Dir[Rails.root.join("spec/support/*.rb")].each {|f| require f}
...
# spec/support/devise.rb
RSpec.configure do |config|
config.include Devise::TestHelpers, :type => :controller
end
感謝您的幫助!