【发布时间】:2019-01-24 22:43:37
【问题描述】:
我目前正在尝试在我的 rails worker 类中测试一部分代码,如下所示(简化版);
class SenderWorker
include Sidekiq::Worker
sidekiq_options :retry => 5
def perform(current_user_guid)
Rails.logger.info "Starting for user_guid: #{current_user_guid}"
user = User.find_by!(guid: current_user_guid)
team = Team.find_by!(uuid: user.team.uuid)
profiles = team.profiles
profiles.each do |profile|
SenderClass.new(profile,
user).send(User::RECALL_USER)
end
Rails.logger.info "Finishing for user_guid: #{current_user_guid}"
end
end
我写的测试就是这些,它们都通过了;
context 'when something occurs' do
it 'should send' do
sender = double("sender")
allow(SenderClass).to receive(:new).with(user_profile, current_user) { sender }
expect(sender).to receive(:send)
expect(Rails.logger).to receive(:info).exactly(2).times
worker.perform(user.guid)
end
end
但是,我并未测试所有呼叫。有没有办法确保我测试 each do 循环中调用的所有内容。提前谢谢你。
【问题讨论】:
标签: ruby-on-rails testing rspec tdd