3

プロジェクトでストライプを使用しています。Railscasts #288 ( http://railscasts.com/episodes/288-billing-with-stripe ) をガイドとして使用しています。ユーザーが有効なユーザー名とパスワードで登録すると、Stripe 顧客アカウントが作成されるようにしています。

統合テストを数回実行すると、Stripe のテスト アカウントに多くのユーザーが作成されていることがわかります。Stripe で Stripe アカウントを作成せずに、通常のユーザーと同じように登録プロセスを実行するように統合テストを構成するにはどうすればよいですか?

4

4 に答える 4

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
于 2015-02-10T05:08:05.287 に答える
2

これは通常、HTTP 要求をインターセプトし、指定した応答を返すWebMockのようなツールで行われます。VCR gem は、内部で WebMock (またはオプションで FakeWeb) を使用して HTTP 要求を記録および再生することにより、このプロセスを容易にします。VCR に Railscast がありますが、少し古くなっています。filter_sensitive_data構成オプションを使用して機密データ (API キーなど) を記録しないように注意してください。

于 2013-03-11T06:09:25.590 に答える
1

テストを可能な限り現実的なものにせずに、統合を実際にテストすることは困難です。したがって、stripe にテスト顧客アカウントを作成させ、Webhook を使用してそれらを自動的に削除することをお勧めします。

具体的には、customer.created イベントを処理します。event->livemode == false の場合、リクエストを API に送り返し、顧客を削除します。

このようにして、ライブ モードで作成された顧客のみを保持しながら、テストしながらプロセス全体を実行します。

于 2013-03-22T18:32:14.847 に答える