2016-07-12 1 views
0

ユーザーは私のRailsストアフロントからチェックアウトすることができ、それによってorderが作成されます。ユーザーがキャンセルしないと仮定すると、1か月後に繰り返し注文を作成したいと考えています。rspecとsidekiqを使用して、将来発生する必要があるものをテストするにはどうすればよいですか?

今後発生するようにスケジュールするのではなく、今行うべきことを探す方が良いと思うので、処理する必要がある注文を探して、それぞれの状況でSidekiqジョブを作成したいと思っています。これらのジョブのそれぞれは、前の注文と同じ内容の新しい注文を作成します。

プロジェクトにSidekiqを追加するか、この機能を実装する前に、私のジョブが適切な時間にエンキューされていることを伝えるrspecテストを作成します。次に、エンキューを実装し、そのジョブが実際に新しい注文を作成することを確認する仕様を書くことに移ります。その時点で、私はそれを実行して実装します。

私の質問は、ジョブを確実に作成するためのテストを実装する方法です。

私はActiveSupport::Testing::TimeHelpersがTimecopに取って代わりましたので、私はそれをすべて使用しています。私が最初に考えたのは、これを行うには、次のようになります。

  1. ジョブが

を処理する必要があります。しかし私は注文を処理するために作成されたことを確認順

  • 月早送り
  • を作成します。このケースでは仕事がないと確信しているので、どうやって進めるか分かりません。

  • 答えて

    0

    そのドキュメントからrspec-sidekiq宝石

    例でhave_enqueued_jobテスター

    AwesomeJob.perform_async 'Awesome', true 
    # test with... 
    expect(AwesomeJob).to have_enqueued_job('Awesome', true) 
    
    +1

    は理にかなって、私はエラー 'have_enqueued_jobに実行していると私ので、吐き出しのみサポートブロックexpectations'をenqueue_jobがあります具体的には私の仕様でこの仕事を作成しようとしているわけではありません。私の目標は、1ヶ月後に仕事がエンキューされるように、必要な部分があることをテストすることです。 – Eric

    +0

    コードのユニットテストを書くのはどうですか? –

    +0

    私は単体テストやモックのすべてですが、ビジネス上重要なため、システムが動作していることを確認するための統合テストが必要です。 – Eric

    関連する問題