于是我在网上搜索解决方案,但是关于在Rails中创建的初始化器的测试信息似乎很少。
目前,我已经在我的configinitializersretrieve_users.rb文件中写了一个相当大的API call-n-store。它发出一个API请求,解析JSON,然后将数据存储为用户。由于相当大,我还没有找出最干净的方法来测试它。由于我需要在任何函数运行之前检索用户,我不相信我可以把这个脚本移到其他地方(尽管欢迎其他建议)。我有几个问题。
谢谢
我只是给了这个机会,并有通过rspec测试,我将进一步重构我的代码,并在最后它会更短,但这里是一个快照,我做了什么,利用 这个链接作为指导。
它的要点是:在你的初始化器文件中建立一个类,里面有你想要的函数,然后在类中的函数上写测试。
在初始化器文件中加入你想要的功能,然后在类中的功能上写测试。
StripeEvent.configure do |events|
events.subscribe 'charge.dispute.created' do |event|
StripeEventsResponder.charge_dispute_created(event)
end
end
class StripeEventsResponder
def self.charge_dispute_created(event)
StripeMailer.admin_dispute_created(event.data.object).deliver
end
end
specconfiginitializersstripe_events_spec.rb。
require 'spec_helper'
describe StripeEventsResponder do
before { StripeMock.start }
after { StripeMock.stop }
after { ActionMailer::Base.deliveries.clear }
describe '#charge_dispute_created' do
it "sends one email" do
event = StripeMock.mock_webhook_event('charge.dispute.created')
StripeEventsResponder.charge_dispute_created(event)
expect(ActionMailer::Base.deliveries.count).to eq(1)
end
it "sends the email to the admin" do
event = StripeMock.mock_webhook_event('charge.dispute.created')
StripeEventsResponder.charge_dispute_created(event)
expect(ActionMailer::Base.deliveries.last.to).to eq(["[email protected]"])
end
end
end