我正在尝试在我的Rails应用程序中测试场景,其中客户允许订阅转为"未支付"(通常是因为卡片已过期并且在Stripe重试收费的两周内未更新)并且最终到处都是更新卡并重新激活帐户.我相信我的逻辑是正确的(更新卡并支付每张未付的发票),但我希望能够测试它,或者更好的是,写一些RSpec测试(功能测试和可能的控制器测试).问题是,我无法弄清楚如何创建一个订阅"未付"的模拟情况.(我想我可以使用过期卡创建一堆帐户并等待两周时间进行测试,但这不是一个可接受的解决方案.我甚至无法仅为"测试"上下文更改订阅重试设置以加快进程. )我发现了stripe-ruby-mock但我无法手动设置订阅的状态.
这是我尝试过的:
plan = Stripe::Plan.create(id: 'test')
customer = Stripe::Customer.create(id: 'test_customer', card: 'tk', plan: 'test')
sub = customer.subscriptions.retrieve(customer.subscriptions.data.first.id)
sub.status = 'unpaid'
sub.save
sub = customer.subscriptions.retrieve(customer.subscriptions.data.first.id)
expect(sub.status).to eq 'unpaid'
Run Code Online (Sandbox Code Playgroud)
这是stripe-ruby-mock的结果:
Failure/Error: expect(sub.status).to eq 'unpaid'
expected: "unpaid"
got: "active"
Run Code Online (Sandbox Code Playgroud)