我使用 google_auth 进行了此操作,但您可以使用 facebook、twitter 和 github 进行相同的操作。
首先删除这一行:
request.env["omniauth.auth"] = OmniAuth.config.mock_auth[:facebook]
在您的 spec_helper.rb 中添加这些行:
Capybara.default_host = 'http://localhost:3000' #This is very important!
OmniAuth.config.test_mode = true
OmniAuth.config.add_mock(:default, {
:info => {
:email => 'foobar@test.com',
:name => 'foo',
:password => 'qwerty123'
}
})
然后在你的助手中:
module FeatureHelpers
def login_with_oauth(service = :google_apps)
visit "/users/auth/#{service}"
end
end
将您的助手包含在 spec_helper.rb 中
RSpec.configure do |config|
config.include FeatureHelpers, type: :feature
end
最后,在您的 feature/capybara_spec.rb 文件中
feature "Signing in" do
before do
Capybara.current_driver = :selenium
login_with_oauth #call your helper method
end
scenario "Signing in with correct credentials" do
expect(page).to have_content('Welcome')
end
end
我知道有点晚了,也许你找到了答案,但如果你不能或有人正在阅读这本书,那就太好了!