Написание функциональных тестов для контроллера facebooker? - PullRequest
3 голосов
/ 03 февраля 2010

У кого-нибудь есть какие-либо советы по передовым методам проверки запросов на Facebook в функциональных тестах? Это так же просто, как добавить все необходимые параметры в запрос? Есть ли способ заглушить их?

Я использую facebooker, который поставляется с фиктивным сервисом:

  # A mock service that reads the Facebook response from fixtures
  # Adapted from http://gist.github.com/44344
  #
  #   Facebooker::MockService.fixture_path = 'path/to/dir'
  #   Facebooker::Session.current = Facebooker::MockSession.create

Но когда я пишу базовый тест get, он пытается перенаправить браузер на страницу facebook для добавления приложения, что, как я предполагаю, указывает на то, что насмешка не работает.

  test "loads respondent" do
    Facebooker::Session.current = Facebooker::MockSession.create
    get :index
    puts @response.body # => <html><body>You are being <a href="http://www.facebook.com/install.php?api_key=65e9d2c74b295cc5bcea935b584557f6&amp;v=1.0&amp;next=http%3A%2F%2Ftest.host%2Ffacebook">redirected</a>.</body></html>
  end

1 Ответ

3 голосов
/ 05 февраля 2010

Я работал с последней версией facebooker (1.0.58):

# test_helper.rb
require 'facebooker/mock/session'
require 'facebooker/mock/service'

Facebooker::MockService.fixture_path = File.join(RAILS_ROOT, 'test', 'fixtures', 'facebook')

Очевидно, что вам придется создать каталог в Facebook или поместить его куда угодно. Внутри вы должны добавить папку для каждого метода facebook и XML-файл для различных типов ответов, которые вы хотите проверить. Я должен был добавить facebook.users.getInfo и facebook.users.hasAppPermission. Самое простое - просто добавить файл с именем default.xml с примером кода из вики Facebook для этих действий.

 # Controller test
 test "facebook action" do  
   get :index, {:fb_sig_added => true}, :facebook_session => Facebooker::MockSession.create
   assert_response :success
 end

Насколько я могу судить, параметр fb_sig_added необходим, потому что внутренняя логика facebooker проверяет параметры непосредственно перед проверкой сессии на этом. Что мне кажется немного странным, но, может быть, для этого есть причина.

...