小编fre*_*gel的帖子

如何使用Rails,Omniauth和Rspec对Facebook登录操作进行单元测试

之前我问了一个类似的问题,但我想我已经超过了原来的错误.无论如何,我有一个新的乐趣失败,我正在试图弄清楚(注意讽刺).这是我的失败:

1) SessionsController#facebook_login should be valid
   Failure/Error: get :facebook_login
   NoMethodError:
     undefined method `slice' for nil:NilClass
   # ./app/models/user.rb:19:in `from_omniauth'
   # ./app/controllers/sessions_controller.rb:22:in `facebook_login'
   # ./spec/controllers/sessions_controller_spec.rb:96:in `block (3 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)

sessions_controller_spec.rb

describe '#facebook_login' do

  before(:each) do
    valid_facebook_login_setup
    request.env["omniauth.auth"] = OmniAuth.config.mock_auth[:facebook]
    get :facebook_login
  end

  it "should be valid" do
    expect(response).to be_success
  end

  it "should set user_id" do
    expect(session[:user_id]).to be_true
  end
end
Run Code Online (Sandbox Code Playgroud)

sessions_controller.rb

def facebook_login
  if request.env['omniauth.auth']
    user = User.from_omniauth(env['omniauth.auth'])
    session[:user_id] = user.id
    redirect_back_or root_path
  else
    redirect_to root_path
  end
end
Run Code Online (Sandbox Code Playgroud)

omn​​iauth_test_helper.rb

module OmniAuthTestHelper …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails omniauth

14
推荐指数
1
解决办法
5613
查看次数

rails new --dev 有什么作用?rails new --edge 怎么样?

所以我最近听说了这个,但我不确定它是什么意思。它应该是“使用 Gemfile 指向您的 Rails 结帐设置应用程序”,但这究竟是什么意思?什么 Rails 结帐?我似乎找不到其他任何东西来进一步解释这一点。

另外,如何使用 rails new --edge?你可以给它一个 git 存储库的 url 并使用它来引导你的应用程序吗?

ruby-on-rails

4
推荐指数
2
解决办法
584
查看次数

在let()中使用哈希

我试图通过将一个哈希放入一个let并只调用let来干我的代码,但它似乎不起作用.我收到这些错误:

syntax error, unexpected =>, expecting '}' (SyntaxError) "email" => user.email,

syntax error, unexpected =>, expecting :: or '[' or '.' ...l" => user.email, "password" => user.password }
Run Code Online (Sandbox Code Playgroud)

这是我的测试:

describe '#create' do
  let(:user) { create(:user) }
  let(:user_params) { "email" => user.email, "password" => user.password }
  before(:each) { User.stub(:find_by_email).and_return(user) }
  it "should send find message to user model" do
    User.should_receive(:find_by_email)
    post :create, locale: "es", user: { user_params }
  end
  it "should set user to @user" do
    post :create, locale: "es", user: …
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails

2
推荐指数
2
解决办法
6136
查看次数

标签 统计

ruby-on-rails ×3

rspec ×2

omniauth ×1

ruby ×1