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