之前我问了一个类似的问题,但我想我已经超过了原来的错误.无论如何,我有一个新的乐趣失败,我正在试图弄清楚(注意讽刺).这是我的失败:
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)
omniauth_test_helper.rb
module OmniAuthTestHelper …Run Code Online (Sandbox Code Playgroud) 所以我最近听说了这个,但我不确定它是什么意思。它应该是“使用 Gemfile 指向您的 Rails 结帐设置应用程序”,但这究竟是什么意思?什么 Rails 结帐?我似乎找不到其他任何东西来进一步解释这一点。
另外,如何使用 rails new --edge?你可以给它一个 git 存储库的 url 并使用它来引导你的应用程序吗?
我试图通过将一个哈希放入一个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)