2016-12-15 32 views
0

Я закрыл свой клиент API. И получили его, чтобы вернуть ожидаемый хеш. Но я не могу получить доступ к собственно хэшу.Что не так с этим Rspec-заглушкой?

например

puts page # returns {:access_token=>"blah", :name=>"parrotcafe", :fb_id=>"2131231", :perms=>"ADMINISTER"} 

но

puts page['perms'] # returns nil instead of 'ADMINISTER' 

Вот мой Rspec:

describe 'all' do 
    it 'if doesnt exist, it should create authentication' do 
     request.env['omniauth.auth'] = OmniAuth.config.mock_auth[:facebook] 

     client = double("koala client") 
     Koala::Facebook::API.stub(:new).and_return(client) 
     allow(client).to receive_messages(get_connections: [{'access_token': 'blah', 'name': 'parrot', 'fb_id': '2131231', 'perms': 'ADMINISTER'}]) 
     expect { 
     post :all, provider: :facebook 
     }.to change{ Authentication.count }.by(1) 
    end 
    end 

Вот фактический код, где он не .:

@user_graph = Koala::Facebook::API.new(authentication.token) 
    pages = @user_graph.get_connections('me', 'accounts') 
    pages.each do |page| 
    Page.create(user_id: self.id, access_token: page['access_token'], name: page['name'], fb_id: page['id']) if page['perms'].include? "ADMINISTER" 
    end 
+1

Вы должны использовать 'страницу [: завивки]' не 'страницу [«завивки»]'. –

+0

@ Зелёный Есть ли лучший способ сделать это? Изменение моего кода, так что он проходит спецификацию, кажется плохой идеей ... тем более, что работает настоящий код. – echan00

+0

@ Зелёный 'страница [: perms]', похоже, не является решением. все еще пуст – echan00

ответ

0

Обнаруженные проблема в том, что я должен использовать используемый словарь вместо:

allow(client).to receive_messages(get_connections: [{'access_token' => 'blah', 'name' => 'parrotcafe', 'fb_id' => '2131231', 'perms' => 'ADMINISTER'}])