[英]Test that Sidekiq job called mailer
我正在测试我的Sidekiq作业,并且试图弄清楚如何确保它使用正确的参数调用了作业中的方法。 这是我的实际工作:
def perform
csv = Campaign.to_csv
email = current_sso_user.email
CampaignMailer.send_csv(email, csv).deliver_now
end
我想构建一个测试,以确保使用正确的args调用CampaignMailer.send_csv。
这是我目前拥有的:
RSpec.describe CampaignsExortJob, type: :model do
subject(:job) { CampaignsExportJob.new }
describe '#perform' do
let(:campaign) { create(:campaign) }
it 'sends the csv email' do
expect(job).to receive(:CampaignMailer.send_csv)
end
end
end
但这是语法错误。 谁能给我一些有关如何正确测试的指导? 谢谢!
从rspec docs( https://relishapp.com/rspec/rspec-mocks/v/2-14/docs/message-expectations/expect-message-using-should-receive ):
给定一个名为“ spec / account_spec.rb”的文件,该文件包含以下内容:
require "account"
require "spec_helper"
describe Account do
context "when closed" do
it "logs an account closed message" do
logger = double("logger")
account = Account.new logger
logger.should_receive(:account_closed).with(account)
account.close
end
end
end
还有一个名为“ lib / account.rb”的文件,其中包含:
Account = Struct.new(:logger) do
def close
logger.account_closed(self)
end
end
当我运行rspec spec / account_spec.rb时,输出应包含“ 1个示例,0个失败”
所以在你的情况下:
CampaignMailer.should_receive(:send_csv).with(<expected_email_arg>, <expected_csv_arg>)
您还可以添加.and_return(<expected_return_value>)
来测试返回值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.