2014-10-31 44 views
0

我正在編寫一個需要通過API與github進行交互的Ruby程序,因此我使用了github_api gem並生成了一個OAuth令牌。我的代碼看起來像這樣:在rspec中測試OAuth令牌的生成

class TokenSetup 
    def initialize(user, password) 
    @user = user 
    @password = password 
    end 

    def generate_oauth_token 
    github = Github.new basic_auth: "#{@user}:#{@password}" 
    token = github.oauth.create scopes: ["repo","delete_repo"], note: 'oauth token' 
    puts "Your OAuth token is: #{token.token}" 
    end 
end 

我對Ruby有點新,所以仍然在學習一些標準。我的問題是,通過rspec測試generate_oauth_token方法是否實際生成令牌是否實用,甚至是可取的?這似乎並不如此,因爲您需要提供實際的用戶名和密碼。所以我可以在我們的github實例上創建一個測試用戶,但我不確定這是否會在rspec中正常測試?我試圖確保我的代碼有很好的測試覆蓋率,所以如果這是標準的話,我想包含一個測試,或者如果有一個實際的方法可以在沒有密碼的情況下進行。提前致謝。

回答

0

剛纔看到你的問題。我對你的測試過程有兩個部分的理解:

  • 更好的切斷依賴。無需生成令牌,甚至無需每次運行規範時都發出HTTP請求。模擬和存根可以幫助您測試行爲,並根據Web請求存檔,您可以使用webmockvcr

  • 明確您的規格的意圖。它對您的generate_oauth_token方法有點混淆,它創建了delete_repo操作的oauth標記。

    • 如果你想測試delete_repo化經營,你可以一次刪除它,後來存根它。
    • 如果你想測試github_api寶石的代幣生成,也許你可以信任它,這是第三方的責任。

希望這可以提供幫助。