所以我在网上寻找解决方案,但似乎有关于测试在Rails中创建的初始化器的信息很少。
目前,我在config / initializers / retrieve_users.rb文件中编写了一个非常大的API call-n-store。它发出API请求,解析JSON,然后将数据存储为用户。由于非常实质,我还没有找到最简洁的测试方法。由于我需要在运行任何函数之前检索用户,我不相信我可以在其他地方移动此脚本(尽管欢迎其他建议)。我有几个问题:
谢谢!
答案 0 :(得分:4)
我刚给了这个镜头,并且已经通过了rspec测试,我将进一步重构我的代码,最后它会更短,但这里是我所做的快照,使用this link as a guide:
它的要点是:在你的初始化文件中用你想要的函数创建一个类,然后在类中的函数上编写测试。
配置/初始化/ stripe_event.rb
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
规格/配置/初始化/ stripe_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(["admin@example.com"])
end
end
end
答案 1 :(得分:1)