Rails从控制台调用控制器操作

我有一个可以创建会话的控制器会话。 我想从控制台调用它,比如controller.create。 这是行动:

def create #raise request.env["omniauth.auth"].to_yaml auth = request.env["omniauth.auth"] user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) || User.create_with_omniauth(auth) user.create_or_update_profile(auth) session[:user_id] = user.id if user.needs_to_create_profile? redirect_to new_profile_path, :notice => "Signed in!. We just need your contact e-mail" else redirect_to root_url, :notice => "Signed in!" end end 

从控制台:

 include ActionController::TestProcess @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new @controller = SomeController.new @request.env["omniauth.auth"] = {'provider' => "twitter", 'uid' => "1234", 'user_info' => {'name' => "foo"}} app.get "/signup" etc 

来自rspec:

 it "should allow login" do request.env["omniauth.auth"] = {'provider' => "twitter", 'uid' => "1234", 'user_info' => {'name' => "foo"}} post :create puts @current_user.name assigns(@current_user).should_not be_nil end