nil的未定义方法`downcase':NilClass

时间:2013-03-25 21:50:06

标签: ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

describe GameSystem::Client do

  def client
    GameSystem::Client.new(signature_method: 'HMAC-SHA1', oauth_key: 'kk', oauth_secret: 'bb', oauth_access_token_url: 'https:://localhost')
  end

  before :each do
    WebMock.reset!       
  end

  describe 'response' do

    context 'wrong path' do
      it 'raises JSON::ParserError on invalid return value' do
        stub_request(:get,"https://games.com/game_id/invalid_id").to_return(:status => 200, :body => 'invalid json', :headers => {})
        Rails.logger.info "#{client.games_by_id("invalid_id")}"
      end
    end
  end

end

任何人都可以让我知道我做错了什么或者我能做些什么不同?。

它基本上会在行

处抛出此错误 我的客户

@access_token = @consumer.get_access_token(nil)

2 个答案:

答案 0 :(得分:0)

如果您能够更加具体地了解您正在尝试做什么,那就太好了。

错误非常自我解释。您收到downcase for nil:NilClass,因为您尝试拨打downcase以查找无对象...提供更多信息,我们将能够提供更好的帮助。

答案 1 :(得分:0)

我意识到这个问题已经回来了,但我刚刚在测试套件中遇到了这个问题。听起来很熟悉。

我的错误是

Failure/Error: get :index
  ActionView::Template::Error:
    undefined method `downcase' for nil:NilClass

事实证明,我正在使用mobile-fu而我正在对is_mobile_device?进行存根,而且还没有存根mobile_device。在某个地方,mobile-fu试图将设备名称缩小为nil。通过为mobile_device添加存根,事情就会消失。在规范的前一个块中,我补充说:

controller.stub(:is_mobile_device? => true, :mobile_device => 'iphone')

如果您不使用mobile-fu,则可能会遇到其他问题。我能够使用prypry-debugger跟踪实际问题。绝对值得研究的工具。