3

我在項目上使用條帶。我使用Railscasts#288(http://railscasts.com/episodes/288-billing-with-stripe)作爲指南。我擁有它,以便一旦用戶註冊了有效的用戶名和密碼,我將創建他們的Stripe客戶帳戶。集成測試在Stripe上創建測試用戶,如何停止或停用

經過我的集成測試的幾次運行後,我可以看到我在我的Stripe測試帳戶中創建了許多用戶。我如何構建集成測試,以便像典型用戶那樣通過我的註冊過程,但是沒有使用Stripe創建Stripe帳戶?

+0

我剛剛創建一個新用戶每次,並清除所有的測試數據定期 – AJcodez 2013-03-11 05:01:54

回答

2

這通常使用類似WebMock的工具完成,該工具攔截HTTP請求並返回您提供的響應。gem通過使用WebMock(或者可選的FakeWeb)記錄和重播HTTP請求使得這個過程更加簡單。 VCR上有一個Railscast,但它有點過時了。注意不要使用filter_sensitive_data配置選項來記錄任何敏感數據(即api鍵)。

1

很難真正地測試集成,而不會使測試儘可能逼真。因此,我建議你讓條紋創建測試客戶帳戶,但利用webhooks自動刪除它們。

具體而言,您將處理customer.created事件。如果event-> livemode == false,則向api發送一個請求以刪除該客戶。

通過這種方式,您可以在測試時貫穿整個過程,同時只保留在實時模式下創建的客戶。

5

我來了一點晚,遊戲,但檢查出StripeMock。它是專門爲此目的而製作的。

StripeMock.start 
Stripe::Customer.create({ 
    id: '123', 
    email: '[email protected]', 
    card: 'void_card_token', 
    subscriptions: { 
    data: [{ 
     plan: { 
     name: 'Some Subscription Plan', 
     currency: 'usd', 
     amount: 1000 
     }, 
     start: 1410408211, 
     status: 'active', 
     current_period_start: 1410408211, 
     current_period_end: 1413000211 
    }] 
    } 
}) 

test... test... test... 
StripeMock.stop 
3

我處理,通過使通過測試創建的所有我的客戶已經在他們的電子郵件地址「可刪除」,並添加這些行我spec_helper。

config.after(:suite) do 
    custs = Stripe::Customer.all(limit: 100).data 
    custs.keep_if { |c| c.email.match(/deletable/) } 
    custs.each { |c| c.delete } 
end 
+0

值得注意的是,條紋員工告訴我,他們希望他們的客戶想要直接測試。所以雖然通常它可能是一個糟糕的形式,讓你的規格碰到實際的api,條紋假設你會這樣做。 – 2015-03-19 19:21:52

相關問題