1
我正在編寫一個使用Devise + OmniAuth登錄的示例應用程序,並使用twitter gem來獲取用戶名。我想添加一些集成測試,但我不知道如何處理twitter gem。我如何使用twitter gem和capybara進行集成測試?
這裏是我的用戶模型(這是大多數的邏輯被發現):
def build_authentication(omniauth)
# If the provider is twitter, get additional information
# to build a user profile.
if omniauth['provider'] == 'twitter'
self.build_twitter(omniauth)
end
# now put the authentication in the database
authentications.build(:provider => omniauth['provider'],
:uid => omniauth['uid'],
:token => omniauth['credentials']['token'],
:secret => omniauth['credentials']['secret'])
end
def build_twitter(omniauth)
Twitter.configure do |config|
config.consumer_key = TWITTER_KEY
config.consumer_secret = TWITTER_SECRET
config.oauth_token = omniauth['credentials']['token']
config.oauth_token_secret = omniauth['credentials']['secret']
end
client = Twitter::Client.new
self.name = client.current_user.name
end
我已經添加下面我spec_helper.rb讓我通過集成測試的登錄部分:
OmniAuth.config.test_mode = true
OmniAuth.config.mock_auth[:twitter] = {
'provider' => 'twitter',
'uid' => '12345',
'credentials' => {
'token' => '12345',
'secret' => '54321'
}
}
但我無法弄清楚如何測試它使用Twitter的寶石build_twitter
方法。任何幫助將不勝感激。
謝謝!
感謝「喬希克魯斯」答案。我知道我使用twitter gem的效率並不高,而且我可以從omniauth hash中獲得名稱,但這是一個我實際上想要設置omniauth和twitter gem的示例。 – spinlock
很酷。那麼我已經對Twitter的寶石進行了測試,但非常非常有限。我使用摩卡並有'Twitter :: Client.any_instance.expects(:update)'來確保在集成測試期間調用該方法。 –
值得添加另一個gem/syntax嗎?摩卡看起來很有趣,但我想回到編寫代碼而不是學習新的測試框架:) – spinlock