Ruby on rails 模拟用户登录Rspec-使用Faraday和Github Api Gems

Ruby on rails 模拟用户登录Rspec-使用Faraday和Github Api Gems,ruby-on-rails,ruby,testing,rspec,capybara,Ruby On Rails,Ruby,Testing,Rspec,Capybara,我正在使用Faraday和Github Api gems让用户登录Github。为了测试任何类型的功能,我必须模拟这种行为。我在想,在我的规范中,我应该说“如果调用了新操作(这是Ping github api的方式),那么重定向到create操作并传入创建用户所需的参数。”我不完全确定如何做到这一点。我意识到有Oauth的解决方案,有一些带有帮助器方法的模块可以模拟这种行为,但我正在向其他人构建的应用程序添加测试,所以它必须保持原样。任何帮助或指点都将不胜感激。我对测试也相当陌生,所以请随意评论

我正在使用Faraday和Github Api gems让用户登录Github。为了测试任何类型的功能,我必须模拟这种行为。我在想,在我的规范中,我应该说“如果调用了新操作(这是Ping github api的方式),那么重定向到create操作并传入创建用户所需的参数。”我不完全确定如何做到这一点。我意识到有Oauth的解决方案,有一些带有帮助器方法的模块可以模拟这种行为,但我正在向其他人构建的应用程序添加测试,所以它必须保持原样。任何帮助或指点都将不胜感激。我对测试也相当陌生,所以请随意评论测试本身

规格 会话控制器
webmock()?它将允许您使用预定义的响应模拟与Github的连接,因此它将尽可能接近现实+您可以在响应中定义变量

非常感谢!去测试一下,我会回来的。你也可以找到有用的。Webmock在阻止任何连接方面都很好,可以与curl一起工作,但vcr只会记录每个呼叫一次,他们会从文件中重播它。
require "rails_helper"

RSpec.feature "User submits a project" do
  scenario "they see the index page for their projects" do

    project = create(:project)

    visit '/projects/new'

    fill_in "project_title", with: project_title
    fill_in "project_project_type", with: project_project_type
    fill_in "project_description", with: project_description
    fill_in "project_starts_at", with: project_starts_at
    click_on "Create Project"

    redirect_to '/projects'

    expect(page).to have_project_title
  end
end
def new
  redirect_to "githubapiurlgoeshere"
end

def create
  @user = User.find_or_create_from_auth_hash(auth_hash)
  if @user.save
    session[:token] = @user.token
    session[:user_id] = @user.id
    redirect_to root_path
  else
    flash[:notice] = "message here"
    redirect_to root_path
  end

end