ユーザーは私のRailsストアフロントからチェックアウトすることができ、それによってorder
が作成されます。ユーザーがキャンセルしないと仮定すると、1か月後に繰り返し注文を作成したいと考えています。rspecとsidekiqを使用して、将来発生する必要があるものをテストするにはどうすればよいですか?
今後発生するようにスケジュールするのではなく、今行うべきことを探す方が良いと思うので、処理する必要がある注文を探して、それぞれの状況でSidekiqジョブを作成したいと思っています。これらのジョブのそれぞれは、前の注文と同じ内容の新しい注文を作成します。
プロジェクトにSidekiqを追加するか、この機能を実装する前に、私のジョブが適切な時間にエンキューされていることを伝えるrspecテストを作成します。次に、エンキューを実装し、そのジョブが実際に新しい注文を作成することを確認する仕様を書くことに移ります。その時点で、私はそれを実行して実装します。
私の質問は、ジョブを確実に作成するためのテストを実装する方法です。
私はActiveSupport::Testing::TimeHelpers
がTimecopに取って代わりましたので、私はそれをすべて使用しています。私が最初に考えたのは、これを行うには、次のようになります。
- ジョブが
を処理する必要があります。しかし私は注文を処理するために作成されたことを確認順
は理にかなって、私はエラー 'have_enqueued_jobに実行していると私ので、吐き出しのみサポートブロックexpectations'をenqueue_jobがあります具体的には私の仕様でこの仕事を作成しようとしているわけではありません。私の目標は、1ヶ月後に仕事がエンキューされるように、必要な部分があることをテストすることです。 – Eric
コードのユニットテストを書くのはどうですか? –
私は単体テストやモックのすべてですが、ビジネス上重要なため、システムが動作していることを確認するための統合テストが必要です。 – Eric