故障排除NoMethodError:未定义的方法`formats =&#39;对于#<controller @ _url_options = nil> </controller @ _url_options = nil>

时间:2014-12-07 19:36:18

标签: ruby-on-rails oauth

我正在尝试实施Oauth并正在创建一个请求令牌的测试。下面的代码是我用于请求令牌的控制器测试。我的测试中断的地方是代码到达post :request_token,我从上面得到的错误只有Authorizations控制器的错误。

以下是我的测试代码:

   def test_request_token
      @options = default_oauth_parameters(api_keys(:first))
      @signature = OAuth::Signature::HMAC::SHA1.new(
        RequestMock.new('POST', @request.url + 'oauth/request_token', @options)
      ) do
        [nil, api_keys(:first).secret]
      end
      assert_difference 'Authorization.count' do
        binding.pry
        post :request_token, @options.merge(:oauth_signature => @signature.signature    )
        assert_response :success
      end
      @authorization = api_keys(:first).reload.authorizations.first
      assert @authorization
      assert_equal "oauth_token=#{@authorization.token}&oauth_token_secret=#{@author    ization.secret}", @response.body
    end

从我的故障排除,我怀疑我的错误是在config / routes.rb文件中。我相信/ oauth / test_request不接受我使用binding.pry确认的get或post请求。但是,使用下面的代码,您可以看到我的oauth / request_token路由通过get和post映射到授权控制器。它应该能够接受请求。可能有什么不对?

以下是我的routes.rb:

root 'home#index'

 resources :api_keys, only: :index
 resources :domain_blacklists, except: :show

 resources :accounts, except: [:index, :show, :new, :create, :edit, :update, :delete] do
   resources :api_keys, constraints: { format: :html }, except: :show
   member do
    get :settings
  end
  resources :authorizations
end

get '/oauth/test_request',  :to => 'authorizations#test_request',  :as => :test_request
get '/oauth/access_token',  :to => 'authorizations#access_token',  :as => :access_token
match '/oauth/request_token', :to => 'authorizations#request_token', :as => :request_token, via: [:get, :post    ]

get '/oauth/authorize',     :to => 'authorizations#authorize',     :as => :authorize
get 'coverage' => 'coverage#index'

这个问题是我正在实施的定制解决方案,我只期望来自社区的潜在客户从哪里尝试查看。更具体地说,我的代码在主要的ruby包的这一点上断了

gems/actionpack-4.1.7/lib/action_controller/metal/testing.rb

此时:

module Functional # :nodoc:
  def set_response!(request)
  end

  def recycle!
    @_url_options = nil
    self.formats = nil
    self.params = nil
  end
end

社区中的某些人是否有良好的领导能力?如果需要进行故障排除,我们可以提供帮助,并提供更多信息。感谢。

0 个答案:

没有答案