すぐに割引が期限切れになっていると、10時にユーザーに通知したいと思います。私は英雄の時間ごとのcronを使用しています。私はRuby 1.8.7でRails 3.0.9を使っています。私はlib/tasks/cronに次のcron.rakeを持っています。キュウリで定期的なcronジョブをテストする
# Notify users with expiring claims
puts "Notifying users with expiring claims..."
if Time.zone.now.hour == 10
Claim.expiring_tomorrow.reject(&:redeemed?).compact.each do |claim|
Mailer.delay.notify_customer_claim_expiration(claim)
claim.update_attribute(:expiration_notified, true)
end
end
puts "done."
それは素晴らしいです。
Scenario: Not receiving a expiration reminder too early
Scenario: Receiving a expiration reminder only once
Scenario: Not receiving a reminder for a redeemed claim
ので、私は以下の特徴を書いた:
And /^the hourly cron job exists$/ do
require "rake"
@rake = Rake::Application.new
Rake.application = @rake
Rake.application.rake_require "lib/tasks/cron"
end
And /^the hourly cron job has fired$/ do
Rake::Task["cron"].invoke
end
:以下cron.stepsステップ定義に
Feature: Being reminded that a claimed discount is expiring
Background:
Given the hourly cron job exists
Scenario: Not receiving a expiration reminder too early
And the hourly cron job has fired
Scenario: Receiving a expiration reminder only once
And the hourly cron job has fired
Scenario: Not receiving a reminder for a redeemed claim
And the hourly cron job has fired
を私の問題は、私はキュウリにおける3つの異なるシナリオをテストしなければならないということです
各シナリオを個別に実行すると、それらは合格します。私は全体の機能を実行した場合、それが有する第二(いない最初の)シナリオに失敗:
RuntimeError: Don't know how to build task 'cron'
レーキが最初のシナリオを超えて永続化されていないように見えるか、2番目のシナリオが実行される前にリセットする必要があります。 ..?
おかげで... G
ありがとうポスト。私はこれをやっていました: –