2010-02-03 35 views
3

任何人都有嘲笑功能測試中的Facebook請求的最佳做法的任何提示?它是否像添加所有適當的參數一樣簡單?有沒有辦法將這些出來?爲facebooker控制器編寫功能測試?

我使用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 

回答

3

我得到這個工作與最新版本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.getInfofacebook.users.hasAppPermission。最簡單的方法就是添加一個名爲default.xml的文件以及來自facebook wiki的示例代碼以執行這些操作。

# 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邏輯直接在一個檢查會話之前檢查PARAMS。這對我來說似乎有點不爽,但也許有一個原因。

相關問題