2017-04-01 4 views
0

私は、Rspecテストを書くためのさまざまな機能を持っています。しかし問題は、私がここでテストしようとしているのは、各関数ごとに同じ構文をしているので、各テストケースに "期待する"ペーストをコピーする必要があります。私はアサーションを一度期待してどのように書くことができ、各テストステップに当てはまるのか知っていますか?でどのように私は1つのRspecが自分自身を繰り返すことなく、すべてのテストに対してアサーションを実行することを期待できますか?

見て "期待する(遅延:: Job.count).TO EQ(1)" とは、以下のコードでは:2つのオプションここに持っている

it 'is able to send reminder email for submission deadline to signed-up users ' do 
    mail = DelayedMailer.new(@assignment.id, "submission", @due_at) 
    Delayed::Job.enqueue(payload_object: mail, priority: 1, run_at: 1.second.from_now) 
    expect(Delayed::Job.count).to eq(1) 
    expect(Delayed::Job.last.handler).to include("deadline_type:  submission") 
    expect { mail.perform } .to change { Mailer.deliveries.count } .by(1) 
    end 

    it 'is able to send reminder email for review deadline to reviewers ' do 
    mail = DelayedMailer.new(@assignment.id, "review", @due_at) 
    Delayed::Job.enqueue(payload_object: mail, priority: 1, run_at: 1.second.from_now) 
    expect(Delayed::Job.count).to eq(1) 
    expect(Delayed::Job.last.handler).to include("deadline_type: review") 
    expect { mail.perform } .to change { Mailer.deliveries.count } .by(1) 
    end 

    it 'is able to send reminder email for Metareview deadline to meta-reviewers and team members of the assignment' do 
    mail = DelayedMailer.new(@assignment.id, "metareview", @due_at) 
    Delayed::Job.enqueue(payload_object: mail, priority: 1, run_at: 1.second.from_now) 
    expect(Delayed::Job.count).to eq(1) 
    expect(Delayed::Job.last.handler).to include("deadline_type: metareview") 
    expect { mail.perform } .to change { Mailer.deliveries.count } .by(2) 
    end 

答えて

2

1)してくださいそのロジックを包むヘルパーメソッド:https://relishapp.com/rspec/rspec-core/v/3-4/docs/helper-methods/define-helper-methods-in-a-module

この方法の唯一の欠点は、必要なときにメソッドを呼び出す必要があることです。

または

2)は、各フックの後に使用してください:https://relishapp.com/rspec/rspec-core/v/3-4/docs/helper-methods/define-helper-methods-in-a-module

それは文字通りすべてのスペック後に実行されますので、私はこの1つをお勧めしません。

+0

私はあなたの2番目のリンクが間違って最初のリンクと同じだと思います。あなたが言っていることは分かっていますが、私は人々がヘルパーや "後"のブロックに "期待する()..."コマンドを入れているとは思わない。 –

関連する問題