2013-03-27 4 views
0

я следующий кодМок «» получил неожиданное сообщение

Class Client 
    def initialize(options = {}) 
    @key = options['oauth_key'] 
    @secret = options['oauth_secret'] 
    @access_token_url = options['oauth_access_token_url'] 
    @signature_method = options['signature_method'] 
    @consumer = OAuth::Consumer.new(@key, @secret, {access_token_url: @access_token_url, signature_method: @signature_method}) 
    end 

    def accounts_by_id(account_id) 
    response = query_account(account_id) 
    parse_json(response) 
    end 

    private 
    def access_token() 
    ... 
    ... 
    ... 
    @access_token = @consumer.get_access_token(nil) 
    ... 
    end 

Потребитель осмеян следующим

oauth_mock = mock('oauth') 
OAuth::Consumer.stubs(:new).returns(oauth_mock) 

я однако получить Пробный «OAuth» получил неожиданное сообщение :get_access_token with (nil) когда я делаю a

GameSystem::Client.new(oauth_key: 'KEY',oauth_secret: 'SECRET',oauth_access_token_url: 'http://localhost').accounts_by_id("kk") 

Метод access_token вызывается внутри query_account. Кто-нибудь знает ho Я мог бы издеваться над этим, чтобы преодолеть эту проблему.

ответ

2

Вы обрушиваете OAuth::Consumer.new, чтобы вернуть свой макет, но вы не натираете что-либо на ваш макет, поэтому у него нет метода #get_access_token (или любых других методов). Вам нужно будет заглушить методы, которые вы хотите использовать для макета.

oauth_mock = mock 
oauth_mock.stubs(:get_access_token).returns(whatever) 
Oauth::Consumer.stubs(:new).returns(oauth_mock) 
+0

Эй, Джим ... Это помогло ... спасибо ... Не понял, что я дважды отправил вопрос – user2217348

Смежные вопросы