J'ai différentes fonctions pour écrire un test Rspec. Mais le problème est, ce que j'essaie de tester ici, a la même syntaxe pour chaque fonction, donc je dois copier coller cette ligne "attendue" pour chaque cas de test. Savez-vous comment je peux écrire cette attente une fois et appliquer à chaque étape de test?Comment puis-je utiliser un Rspec attendez-vous à ce que l'assertion soit exécutée pour chaque test, sans me répéter?
oeil à "attendre (Delayed :: Job.count) .à eq (1)" Dans le code ci-dessous:
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
Je pense que votre deuxième lien est le même avec le premier par erreur. Je sais ce que vous dites, mais je ne vois pas les gens mettre des commandes "expect() ..." dans les aides, ou "après" les blocs. –